我有一个自定义类别页面,它显示当前类别的子类别,而不是帖子。我想根据自定义字段筛选子类别,以便只显示选定的类别。自定义字段是一个复选框,我使用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\' => \'=\',
)
)
)
);
最合适的回答,由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使用的情况一样。