如何按自定义字段过滤类别?

时间:2016-09-08 作者:jrcollins

我有一个自定义类别页面,它显示当前类别的子类别,而不是帖子。我想根据自定义字段筛选子类别,以便只显示选定的类别。自定义字段是一个复选框,我使用Advanced Custom Fields Plugin.

这是我用来获取子类别的代码:

$cat = get_category( get_query_var( \'cat\' ) );
$cat_id = $cat->cat_ID;

$child_categories = get_categories(
    array(
        \'parent\'     => $cat_id,
        \'orderby\'    => \'id\',
        \'order\'      => \'DESC\',
        \'hide_empty\' => \'0\'
    )
);
我现在正在使用meta_query 正如@birgire所建议的,但它仍然不起作用。我将自定义字段从复选框更改为“真/假”。这是我当前使用的代码:

$cat = get_category( get_query_var( \'cat\' ) );
$cat_id = $cat->cat_ID;

$child_categories = get_categories(
    array(
        \'parent\'     => $cat_id,
        \'orderby\'    => \'id\',
        \'order\'      => \'DESC\',
        \'hide_empty\' => \'0\',
        \'meta_query\' => array(
            array(
                \'key\'     => \'show_cat\',
                \'value\'   => \'true\',
                \'compare\' => \'=\',
            )
        )
    )
);

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

您应该能够使用meta_query 使用的属性WP_Meta_Query 幕后:

$child_categories = get_categories(
    array(
        \'parent\'     => $cat_id,
        \'orderby\'    => \'id\',
        \'order\'      => \'DESC\',
        \'hide_empty\' => \'0\',
        \'meta_query\' => array(
            array(
                \'key\'     => \'mykey\',     // Adjust to your needs!
                \'value\'   => \'myvalue\',   // Adjust to your needs!
                \'compare\' => \'=\',         // Default
            )
        )
    )
);
这假设术语元数据存储在术语元数据表中,例如添加add_term_meta()update_term_meta(), 从WordPress 4.4开始。

之前的方法是将术语元数据存储在选项表中,就像ACF插件OP使用的情况一样。