get_posts returns all posts

时间:2020-01-19 作者:Omer

我很难弄明白get_posts 函数返回所有帖子,而不是特定帖子。

我有一个帖子类型叫做mall, 其中一种分类法称为shop 有两个术语CompiMacho. 在变量中$store_name 当我在中使用变量时,会存储其中一个术语(取决于订单中的产品)terms 对于$malls_args, 我要买所有的购物中心。即使没有存储在变量中的术语$store_name.

我尝试硬编码变量并使用"Copmi" 内部terms 但我还是能拿到所有的购物中心。

add_action( \'woocommerce_admin_order_data_after_order_details\', \'asdf_test\' );
function asdf_test( $order ) {

    $dokanOrderManager = new Dokan_Order_Manager();

    $vendor_id = get_post_meta( $order->get_id(), \'_dokan_vendor_id\', false )[0];

    foreach( $order->get_items() as $item_id => $line_item ) {

        $prod =  $line_item->get_product();
        $prod_id = $prod->get_id();
        $author = get_user_by( \'id\', $prod->post->post_author );
        $store_info = dokan_get_store_info( $author->ID );
        $store_name = $store_info[\'store_name\'];
        $store_address = $store_info[\'address\'][\'street_1\'] . \', \' . $store_info[\'address\'][\'city\'];
        $malls_args = array(
            "post_type" => "mall",
            "tax_query" => array(
                "taxonomy" => "shop",
                "field" => "name",
                "terms" => "Compi" // - - - - - - $store_name gives all posts too.
            )
        );

        $malls = get_posts( $malls_args );

        foreach ( $malls as $mall ) {
            echo $mall->ID . \'<br/>\';
        }

    }

}
有什么想法吗?如果需要更多信息,请告诉我,我会尽力提供。

谢谢

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

您没有正确使用tax_query论点此参数采用tax查询参数数组,以允许使用多个分类法进行复杂查询。您可以在WP_Query documentation

这是正确的方法:

$malls_args = array(
    "post_type" => "mall",
    "tax_query" => array(
        array(
            "taxonomy" => "shop",
            "field" => "name",
            "terms" => "Compi" // - - - - - - $store_name gives all posts too.        
        ),
    )
);

相关推荐