使用get_categories
就像@CoenJacobs一样,答案是一条路要走。不过,这样的循环可能不是很有效。
get_option
不允许通过通配符进行搜索,这是由于您构造键的方式,这是避免循环所需的,但像这样的简单查询可以做到这一点:
$cat_meta = $wpdb->get_results("SELECT option_name,option_value FROM {$wpdb->options} WHERE option_value != \'\' AND option_name LIKE \'meta_field_%\'");
然后,您的循环看起来像(如果我没有读错的话):
foreach ( $cat_meta as $meta ) {
if (\'color\' == $meta[\'option_value\']){
$colors[ $meta[\'option_name\'] ] = $meta[\'option_value\'];
}
}
当我看到有必要这样做时,我总是想知道真正的问题是否不是数据的存储方式。您可能需要考虑将您的类别元存储为单个键下的序列化数组。这是否是一个好主意取决于以下几点:
您需要在密钥中存储多少数据是否需要按键中存储的单个值进行查询虽然检索时可以在一个键中存储大量数据,但始终必须检索并处理所有数据。这可能不会比上面的查询更有效。
尝试在序列化数组/对象中搜索,例如使用SQL
效率极低且容易出错。
存储和检索数组/对象的实际机制很简单。WordPress几乎为您完成了这项工作。
add_option(\'test_option_name\',array(\'a\',\'b\',\'c\'));
var_dump(get_option(\'test_option_name\'));