我正在尝试通过使用ACF创建的自定义字段筛选管理区域中的页面。
我在这里找到了一个函数(http://www.iamabdus.com/blog/wordpress/filter-custom-posts-by-custom-field/ ) 我根据自己的需要修改了代码。
当我单击“pages”时,选项加载正确,但当我单击“Filter”时,即使过滤器工作正常,我也会收到一条警告:“为foreach()提供的参数无效”。var\\u dump($acf\\u字段)返回NULL。
我希望我解释了这个问题。。。
代码如下:
add_action( \'restrict_manage_posts\', \'wpse45436_admin_posts_filter_restrict_manage_posts\' );
function wpse45436_admin_posts_filter_restrict_manage_posts(){
$acf_field_name=\'field_5c65759c23c46\';
$acf_field=get_field_object($acf_field_name);
var_dump($acf_field);
$post_type_to_filter=\'page\';
$type = \'post\';
if (isset($_GET[\'post_type\'])):
$type = $_GET[\'post_type\'];
endif; // isset($_GET[\'post_type\'])
if ($post_type_to_filter == $type):
foreach($acf_field[\'choices\'] as $field_value => $field_label){
$values[$field_label]=$field_value;
}
?>
<select name="custom_field_filter_value">
<option value="">Filtra per tipo pagina</option>
<?php $current_v = isset($_GET[\'custom_field_filter_value\'])? $_GET[\'custom_field_filter_value\']:\'\';
foreach ($values as $label => $value) :
printf(
\'<option value="%s"%s>%s</option>\',
$value,
$value == $current_v? \' selected="selected"\':\'\',
$label
);
endforeach;
?>
</select>
<?php
endif;
}
add_filter( \'parse_query\', \'wpse45436_posts_filter\' );
function wpse45436_posts_filter( $query ){
global $pagenow;
$type = \'post\';
if (isset($_GET[\'post_type\'])):
$type = $_GET[\'post_type\'];
endif;
$query->query_vars[\'meta_value\'] = $_GET[\'custom_field_filter_value\'];
}