函数使用GET_POSTS(),当从函数调用时Tax_Query不起作用。php

时间:2015-01-20 作者:any_h

我想获得分类法“类型”中所有“带”的数组,然后在其他函数等中使用该数组utilities.php 文件,我require() 在里面functions.php 它有以下函数定义,并在之后立即调用:

function get_all_bands()
{
    $bands = get_posts(array(
        \'post_type\'      => \'model\',
        \'posts_per_page\' => -1,

        // Includes the bands
        // NOTE: this wont work if this function is called from functions.php
        // which I need to do.
        \'tax_query\' => array(
            array(
                \'taxonomy\' => \'types\',
                \'field\'    => \'slug\',
                \'terms\'    => \'band\',
                \'operator\' => \'IN\'
            )
        )
    ));
    return $bands;
}
print_r(get_all_bands())
如果我print_r(get_all_bands()) 在模板中,如header.php, page.php, 或者一般来说,任何负责显示内容的模板,都可以正常工作。但如果我print_r(get_all_bands()) 在里面functions.php 它返回一个空数组,所以我不能在任何东西上使用它。

没有tax_query 它可以在任何地方工作:

// This works
function get_all_bands()
{
    $bands = get_posts(array(
        \'post_type\'      => \'model\',
        \'posts_per_page\' => -1
    ));
    return $bands;
}
print_r(get_all_bands())
我还尝试添加global $post 但它什么也没做。

编辑:明确定义和调用函数的位置。

1 个回复
SO网友:David Gard

用于您的functions.php 文件,试试这个-

add_action(\'init\', \'my_test_get_all_bands\', 99);
function my_test_get_all_bands(){
    echo \'<pre>\'; print_r(get_all_bands()); echo \'<pre>\';
}
正如我试图在对你的问题的评论中所说的(以及Pieter Goosen 如果您的分类法尚未注册tax_query 您的get_all_bands() 函数不能作为分类法使用types 不存在。

我不知道您是如何添加分类法的,但我个人使用init 挂钩优先级为1, 这就是为什么我优先考虑99 在本例中。

不过,它的长与短之处在于,您的函数是有效的,通过在模板中使用它,您已经证明了这一点:)

希望这有帮助。

结束

相关推荐

Custom taxonomy template loop

我知道这个问题问得很多,但我找不到一个适合我的答案。我制作了一些自定义帖子类型和一些自定义分类法。我有自定义的帖子类型Products 并与分类法相联系Product Categories. 当用户在产品页面上单击产品类别时,我想向他显示该特定类别中的所有产品。问题是,产品类别将约为50种。现在我发现的唯一一件事就是把这个<?php $loop = new WP_Query( array( \'post_type\' => \'all_products\', \'posts_per_page\