在edit.php中按类别显示帖子时隐藏具有子项的帖子

时间:2014-04-03 作者:Panagiotis

我有一个自定义的帖子类型,叫做"ttc_infobit" 属于名为"ttc_catalogue". 这种分类法是分层的。

当我在中筛选帖子时edit.php 根据这种分类法,我只想显示具有当前所选术语的帖子,而不想显示其子项。

例如,如果我的url是:

/wp-admin/edit.php?s&post_status=all&post_type=ttc_infobit&action=-1&m=0&lang=el&admin_page_template&ttc_catalogue=77&paged=1&mode=list&action2=-1

WordPress将显示具有ttc_catalogue id为77,但也显示具有ttc_catalogue ID 101和102是77的子对象。

如何筛选edit.php 仅显示id=77的项目?

1 个回复
SO网友:gmazzap

默认情况下,当您运行分层分类术语查询时,WordPress也会从其子级返回post。这在后端和前端都会发生。

\'tax_query\' 参数有一个参数\'include_children\' 这是Codex为范围引入的:

include_children (布尔)是否为层次分类法包含子级。默认为true。

因此,您应该运行税务查询,将该参数设置为false,但是not 可以从url运行税务查询,但您可以执行以下操作\'pre_get_posts\' 然后设置它。

有关更多信息,请参阅内联注释:

add_action(\'pre_get_posts\', function( $query ) {
  if ( // being sure the query is the right one
    ! is_admin() || ! $query->is_main_query()
    || ! ( $term = $query->get(\'ttc_catalogue\') )
  ) return;
  // being sure the page is the right one
  $s = get_current_screen();
  if ( $s->id !== \'edit-ttc_infobit\' ) return; 
  // prepare tax query
  $tax_query = array(
    \'taxonomy\' => \'ttc_catalogue\',
    \'terms\' => array( $term ),
    \'field\' => is_numeric( $term ) ? \'id\' : \'slug\',
    \'include_children\' => FALSE
  );
  // set tax query
  $query->set( \'tax_query\', array( $tax_query ) );
  // unset \'plain\' ttc_catalogue argument
  $query->set( \'ttc_catalogue\', \'\' );
});

结束

相关推荐

重写admin-ajax.php的规则

我浏览了很多帖子,在google上搜索了很多,但还是没能实现。我正在尝试为管理ajax创建一个重写规则。php,以实现此处所示的相同结果:Adding admin-ajax.php to the frontend. Good or bad idea?但是,我不想使用htaccess文件。相反,我需要通过动态添加规则(比如使用add\\u rewrite\\u rule)来实现这一点,例如,因为要调用的ajax函数位于我正在编写的插件中,我希望提供一个友好的URL来调用。我似乎遵循了有关该方法的所有最佳做法