Filtering custom taxonomies

时间:2013-02-15 作者:Michael VanDeMar

这是WordPress论坛的交叉帖子,对此我深表歉意,但已经快一周了,没有得到任何回应,希望这里的人能帮上忙。如果我在任何一个地方都得到回复,我会用链接更新帖子。

我试图将功能扩展到客户端的自定义主题,但在获取query\\u posts()以获取按类别筛选的自定义分类列表时遇到了问题。在函数中创建自定义帖子类型。php是这样的:

//Custom Post Types
add_action(\'init\', \'create_myportfoliotype\');
function create_myportfoliotype() {
    $myportfoliotype_args = array(
        \'label\' => __(\'Portfolio\'),
        \'singular_label\' => __(\'Portfolio\'),
        \'public\' => true,
        \'show_ui\' => true,
        \'menu_position\' => 5,
        \'capability_type\' => \'post\',
        \'hierarchical\' => false,
        \'publicly_queryable\' => true,
        \'query_var\' => true,
        \'rewrite\' => array( \'slug\' => \'portfolio\', \'with_front\' => false ),
        \'can_export\' => true,
        \'supports\' => array(
            \'title\', 
            \'editor\', 
            \'post-thumbnails\',
            \'custom-fields\',
            \'page-attributes\',
            \'author\',
            \'thumbnail\'
          )
       );
  register_post_type(\'myportfoliotype\',$myportfoliotype_args);
}


//Taxonomias
register_taxonomy("categories", array("myportfoliotype"), array("hierarchical" => true, "label" => "Category", "singular_label" => "Category", "rewrite" => true));
register_taxonomy( \'tags\', array("homepage"), array( \'hierarchical\' => false, \'label\' => \'Tags\', \'query_var\' => true, \'rewrite\' => true ) );
register_taxonomy( \'specifics\', array("myportfoliotype"), array( \'hierarchical\' => false, \'label\' => \'Specifics\', \'query_var\' => true, \'rewrite\' => true ) );
目前,该网站有一个页面,可以拉入所有帖子,然后过滤掉通过jquery可见的内容。吸引帖子的查询是:

query_posts( array( \'post_type\' => \'myportfoliotype\', \'paged\' => $paged, \'posts_per_page\' => 80))
这是可行的,但正如我所说的,一切都有可能。他们现在想要的是2个自定义模板,每个模板只拉入2个特定类别。我无法通过jquery进行过滤,因为在这种情况下,它在视觉上无法做到这一点。我试图只引入这两个类别,但出于某种原因,以下代码的任何变体似乎都不起作用:

query_posts( array( \'post_type\' => \'myportfoliotype\', \'paged\' => $paged, \'posts_per_page\' => 80, \'tag_id\' => \'9\' ))
我尝试过的每件事要么仍然吸引了所有帖子,要么一个也没有吸引。

还有人知道一个函数可以转储query\\u posts生成的原始查询吗?如果我能看到实际查询对每个变体所做的操作,并将其与wp\\U Posteta中的信息进行比较,这可能有助于找出问题所在。

1 个回复
最合适的回答,由SO网友:david.binda 整理而成

这不是一个艰难的任务,但你必须阅读carefully the Codex. Especially tax_query part of WP_Query.

您提议的query\\u posts调用错误。这应该是这样的:

query_posts( array(  
    \'post_type\' => \'myportfoliotype\', 
    \'paged\' => $paged, 
    \'posts_per_page\' => 80, 
    \'tax_query\' => array( 
        array( 
            \'taxonomy\' => \'category\', //or tag or custom taxonomy
            \'field\' => \'id\', 
            \'terms\' => array(\'9\') 
        ) 
    ) 
) );
此外,为了提高使用DB查询的效率,您应该考虑使用pre_get_posts hook 而不是query\\u帖子

结束

相关推荐

如何用XDEBUG调试插件?

我能够在本地环境中基于PHP 5.3.0(XAMPP)非常轻松地安装和设置NetBeans 6.9.1和Xdebug。我现在的问题是:如果我在Wordpress的索引上设置断点。php或其他Wordpress核心php文件,NetBeans会正确地停止在所需的位置。相反,如果我在插件文件上设置断点,那么NetBeans的代码执行触发器不会在此停止。你知道怎么解决吗?UPDATE: 有关我正在尝试调试的内容的详细信息插件被调用Vanilla Forums 并具有以下文件结构:- plugins