Hi, i'm currently developping a classified ads plugin.
For this; i created a custom post type (ads) and 3 main taxonomies (ad_type,ad_category,ad_tag).
Let's say we are looking for a red(ad_tag) car(ad_category) in the offers(ad_type).
When you are browsing the ads and viewing the results, you can save the "search filters" used.
It will save a user meta with the subscription (search filters) parameters; eg.
umeta_id user_id meta_key meta_value
147 1 'ad_subscription' array('ad_type'=>'offer','ad_category'=>'cars','ad_tag'=>'red');
On the main ads page; a link for the user will be available; eg. /wordpress/ads/my-subscriptions/147.
If I click on that link; it will load the subscription #147; fill the wp_query arguments with it;and the page will load the matching ads and display them in a custom way (because it's a subscription page).
Here's my problem.
Let's say we saved this subscription.
But now, what if we are not on the subscription page but that we are searching for a red car in the ad offers...
It is exactly the same arguments than in the subscription we saved.
So I wrote a function to compare the searched arguments with every subscription's arguments; so I can now if the search made already have been saved in a subscription.
That's one step.
If the searched arguments ARE already saved in a subscription; I would like to REDIRECT to that subscription.
And here i'm stuck. It makes an infinite loop.
Could you see something that's wrong in this ? :
add_action('pre_get_posts','ads_redirect_to_subscription');
function ads_redirect_to_subscription(&$query) {
if ($query->query_vars['post_type']!='ad') return $query; //we are not searching for ads
if ($query->query_vars['ads_subscription']) return $query; //we ARE loading a subscription
$search = yclads_filter_query_args($query); //get ad search arguments
if(!$search) return $query; //no ad search arguments found
$subscription_id=self::args_are_already_subscription_id($search); //compare search arguments with subscriptions
if ($subscription_id!=$query->query_vars['ads_subscription']){
wp_redirect(yclads_get_subscription_link($subscription_id));
die();
}
}
Thanks a lot !