我目前正在尝试在我的管理员中为自定义帖子类型设置一些过滤器。自定义帖子类型是“玩家”,我正在通过另一个自定义帖子类型“团队”过滤他们。
要创建我的团队下拉列表,我使用get\\u帖子检索我的所有团队:
$args = array( \'numberposts\' => -1, \'post_type\'=> \'team\', \'order\' => \'ASC\', \'orderby\' => \'title\' );
return get_posts( $args );
当我第一次到达编辑屏幕时,这就可以工作了。下拉列表呈现得非常完美。然后我执行过滤(比如说由XI女队进行过滤),结果正如预期的那样,只输出XI女队中的球员。但是我的过滤器列表已经不起作用了,我已经缩小了范围,以获得没有从我的数据库中检索任何内容的\\u帖子。
我做了一些测试,无论我做什么,get\\u posts都会在我执行过滤器后停止工作。
请注意,这是我用来输出团队筛选器并在需要时执行筛选器的代码:
add_filter( \'parse_query\', \'esf_admin_posts_filter\' );
add_action( \'restrict_manage_posts\',\'esf_restrict_listings_by_team\' );
function esf_restrict_listings_by_team( ){
global $typenow;
if ( $typenow==\'player\' ) {
$teams = esf_get_teams();
?>
<select name="esf_team_select">
<option value=""><?php _e(\'Filter By Team\', \'baapf\'); ?></option>
<? foreach( $teams as $team): ?>
<option value="<?=$team->ID?>"><?=$team->post_title?></option>
<? endforeach; ?>
</select>
<?
}
}
function esf_admin_posts_filter( $query ){
global $pagenow;
if ( is_admin() && $pagenow==\'edit.php\' && isset( $_GET[\'esf_team_select\']) && $_GET[\'esf_team_select\'] != \'\') {
$query->query_vars[\'meta_key\'] = \'esf_mm_teams\';
$query->query_vars[\'meta_value\'] = $_GET[\'esf_team_select\'];
}
return $query;
}
提前感谢您提供的任何帮助!
海伦