I think I have identified the problem. But I'm not entirely sure how to proceed.
WP e-Commerce is using the pre_get_posts Action Hook as well as podPress.
But there are 2 things which are probably not a 100% okay how the usage of this Hook is implemented in WP e-Commerce:
- It is used with the function add_filter() (see wp-e-commerce/wpsc-core/wpsc-functions.php line 900 (v3.8.7.1)) although pre_get_posts is an action hook and should probably be used with add_action(). But it seems that WP is tolerant about this issue or maybe it is no issue.
- The bigger problem is how or when this filter/action gets removed later during the page load procedure see line 789 (wpsc-functions.php).
remove_filter( 'pre_get_posts', 'wpsc_split_the_query', 8 ); removes the filter/action with the same priority (8) as this filter was added. Maybe because the definition of this parameter is "The priority of the function (as defined when the function was originally hooked).". But this remove_filter() call is in the callback function which gets called by add_filter() (line 900). This leads probably to a problem.
I'm not sure why it is necessary to remove the filter at the end of the callback function. Maybe it not necessary.
But the problem which has been described in this thread could be resolved by changing the priority from
remove_filter( 'pre_get_posts', 'wpsc_split_the_query', 8 );
to
remove_filter( 'pre_get_posts', 'wpsc_split_the_query', 9 );
Maybe this calling remove_filter() with the same priority inside the callback function itself leads to a conflict. see the paragraph below the example for remove_filter: "[...]It is also worth noting that you may need to prioritise the removal of the filter to a hook that occurs after the filter is added.[...]"
podPress adds its action without a priority to this hook. This means the priority is by default 10 and the podPress function (which initializes all the podPress actions which are customizing the feeds) gets executed after the callback function of WP e-Commerces and if there is a problem in the function of WP e-Commerce then the podPress function does get called.
A work-a-round for this problem would be to change the priority of the podPress action:
podpress.php (v8.8.10.12) line 300:
from none or 10:
add_action( 'pre_get_posts', 'podPress_feed_content_filtering' );
to lets say 7 or higher e.g. 1
add_action( 'pre_get_posts', 'podPress_feed_content_filtering', 7 );
@Eli, if you change one of these numbers you can resolve this problem for your blog. In my opinion it is more correctly to adjust the priority in the file of the WP e-Commerce file (e.g. because of the note from the remove_filter() function explanation page).
@the WP e-Commerce developers: Am I wrong here? What is your view? I'm one of the maintainers of podPress. (A.k.a podPress2010 @ Twitter) If something is wrong with the way podPress uses this Action Hook the I would correct that.
Regards,
Tim