Wordpress ACF 选择:动态使用类别作为选择时仅返回第一个对象
Posted
技术标签:
【中文标题】Wordpress ACF 选择:动态使用类别作为选择时仅返回第一个对象【英文标题】:Wordpress ACF selection: Only first object returned when dynamically using categories as choices 【发布时间】:2016-10-28 10:11:35 【问题描述】:我正在尝试通过动态获取帖子类别来修改 ACF 选择字段,以便用户可以在不同的类别之间进行选择(它用于博客页面模板)。我用的是ACF的函数,现在只返回第一个类别。
这就是我在functions.php
中得到的:
函数 acf_load_color_field_choices( $field )
function categoryName()
$args = array(
'type' => 'post',
'taxonomy' => 'category',
'parent' => 0, // get top level categories
'orderby' => 'name',
'order' => 'ASC',
'hierarchical' => 1,
'pad_counts' => 0
);
$categories = get_categories( $args );
foreach ( $categories as $category )
echo $category->name;
// reset choices
$field['choices'] = array();
// get the textarea value from options page without any formatting
$choices = categoryName();
// explode the value so that each line is a new array piece
$choices = explode("\n", $choices);
// remove any unwanted white space
$choices = array_map('trim', $choices);
// loop through array and add to field 'choices'
if( is_array($choices) )
foreach( $choices as $choice )
$field['choices'][ $choice ] = $choice;
// return the field
return $field;
add_filter('acf/load_field/name=blog_by_cat', 'acf_load_color_field_choices');
我也试过了:
function acf_load_cat_field_choices( $field )
// reset choices
$field['choices'] = array();
// get the textarea value from options page without any formatting
$choices = get_categories();
$value = get_categories();
// explode the value so that each line is a new array piece
$choices = explode("\n", $choices);
// remove any unwanted white space
$choices = array_map('trim', $choices);
// loop through array and add to field 'choices'
if( is_array($choices) )
foreach( $choices as $choice )
$field['choices'][ $value->slug ] = $choice->name;
// return the field
return $field;
这不返回任何内容
还有:
function acf_load_cat_field_choices( $field )
// reset choices
$field['choices'] = array();
// get the textarea value from options page without any formatting
$choices = get_categories();
// explode the value so that each line is a new array piece
$choices = explode("\n", $choices);
// remove any unwanted white space
$choices = array_map('trim', $choices);
// loop through array and add to field 'choices'
if( is_array($choices) )
foreach( $choices as $choice )
$field['choices'][$choice] = $choice;
// return the field
return $field;
这会返回“数组”(一次)
【问题讨论】:
【参考方案1】:categoryName()
没有返回任何内容。与其回显$category->name
,不如将它们打包成一个数组,然后返回该数组?
【讨论】:
【参考方案2】:所以我找到了正确的方法:
函数 acf_load_cat_field_choices( $field )
// reset choices
$field['choices'] = array();
// get the textarea value from options page without any formatting
$getCatSlugs = array('all_posts');
$getCatNames = array('All Posts');
$args = array(
'type' => 'post',
'taxonomy' => 'category',
'parent' => 0, // get top level categories
'orderby' => 'name',
'order' => 'ASC',
'hierarchical' => 1,
'pad_counts' => 0
);
$categories = get_categories( $args );
foreach ( $categories as $category )
$getCatSlugs[] = $category->slug;
$getCatNames[] = $category->name;
$values = implode("\n", $getCatSlugs);
$labels = implode("\n", $getCatNames);
$values = explode("\n", $values);
$labels = explode("\n", $labels);
// loop through array and add to field 'choices'
foreach( array_combine($values, $labels ) as $value => $label )
$field['choices'][ $value ] = $label;
// return the field
return $field;
add_filter('acf/load_field/name=post_by_cat', 'acf_load_cat_field_choices');
【讨论】:
以上是关于Wordpress ACF 选择:动态使用类别作为选择时仅返回第一个对象的主要内容,如果未能解决你的问题,请参考以下文章
Wordpress 类别循环无法检索 ACF 图像给出图像值:NULL