Milo’s comment about pre_get_posts
helped solve this issue for me. In my case the parent theme used the pre_get_posts
action to explicitly set the post_type
for all author pages. It wasn’t in the functions.php, but I was able to find it by searching the theme for instances of pre_get_posts
. (I used grep -R "pre_get_posts" . -l
from the command line to find the file.)
If you’re not using a child theme, you could potentially just delete the problematic function and its add_action()
.
If you are using a child theme, to maintain upgradability of the parent theme, you can use the remove_action function…
Problematic Action existing in Parent Theme:
function problematic_parent_action( &$query ) {
if ($query->is_author) {
$query->set( 'post_type', array( 'problematic_parent_post_type' ) );
}
}
add_action( 'pre_get_posts', 'problematic_parent_action' );
Resolution added to Child Theme:
function remove_problematic_parent_action() {
remove_action( 'pre_get_posts', 'problematic_parent_action' );
}
add_action( 'init', 'remove_problematic_parent_action');