在页面上显示使用ACF创建的自定义字段的所有值

时间:2012-03-27 作者:Bob

我正在使用Advanced Custom Fields / ACF 创建自定义字段。其中之一是显示一些选项的复选框列表(选项1、选项2、选项3…)。

现在,我想在前端的单独页面上显示此字段的所有选项,如下所示:

选项:
-选项1
-选项2
-选项3
-。。。

如何从ACF检索具有密钥的所有选项?

2 个回复
SO网友:Milo

这个get_field_object ACF函数可用于获取特定字段的信息和选项。

首先,需要输出特定字段的字段键。编辑字段组时,单击页面顶部的屏幕选项选项卡。您应该看到一个选项来切换字段键的显示(默认情况下隐藏以节省空间):

Field Key

获得键后,可以加载field对象并输出其值:

$field_key = "field_5039a99716d1d";
$field = get_field_object($field_key);

if( $field )
{
    echo \'<select name="\' . $field[\'key\'] . \'">\';
        foreach( $field[\'choices\'] as $k => $v )
        {
            echo \'<option value="\' . $k . \'">\' . $v . \'</option>\';
        }
    echo \'</select>\';
}

SO网友:SickHippie

如果您试图在选中复选框的情况下输出某些内容,请使用:

<?php if(in_array(\'news\', get_field(\'checkbox\') )): ?>
    <h1>News was ticked!</h1>
<?php endif; ?>
如果要仅显示选中选项的列表,请使用以下选项:

<p>Categories: <?php get_field(\'checkbox\'); ?></p>
这将为您提供一个值数组,您可以使用foreach 公告使用the_field(\'checkbox\') 将为您提供一个逗号分隔的选项字符串,您也可以将其拆分。

我还建议你去ACF\'s site 并查看文档。这种类型的大多数问题都会在那里得到相当详细的回答,开发人员也会活跃在他的支持论坛中。

编辑:如果您希望将可用选项列表输出到一个页面中,以生成动态查询,那么我只有一件事。这是我昨天刚刚编写的一篇文章,用于从给定的自定义字段键(使用ACF)中提取元数据列表。我已经为你做了相当通用的。还有一块JS用于处理ajax请求,还有一块相当复杂的php用于输出结果帖子。我真的无法重写这些内容——JS是标准的WP前向ajax调用/响应,而PHP是对我们显示的12个不同ACF字段(其中2个是转发器)的一堆条件检查。最基本的是这里的代码,按钮onClick 在单独的JS文件中调用ajax函数,ajax函数本身的php本质上为查询设置了一个参数数组,其中之一是$selectedOption$_POST[\'option\'] 作为meta\\u值。这会给new WP_Query( $args );, 然后在循环中使用,其输出通过add_action(\'wp_ajax_the_ajax_hook\', \'fetch_option_list\');add_action( \'wp_ajax_nopriv_the_ajax_hook\', \'fetch_option_list\' ); //for non logged-in users.

 // Get list of meta_values for given meta_key and post_type (page, post, custom post type)
 function meta_list($key = \'\', $type = \'\', $status = \'publish\'){
 global $wpdb;
    $r = $wpdb->get_col($wpdb->prepare( "
    SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm
    LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
    WHERE pm.meta_key = \'%s\'
    AND p.post_status = \'%s\'
    AND p.post_type = \'%s\'
    ORDER BY pm.meta_value ASC", $key, $status, $type));
    return $r;
}

 // ADD EG A FORM TO THE PAGE
 function meta_ajax_frontend(){
    $formlist = meta_list(\'metakey\', \'posttype\');
    echo \'<form id="optionSelect">\';
    echo \'<select id="optionList" name="optionList">\';
    foreach($formlist as $fl => $val) {
        echo \'<option>\' . $val . \'</option>\';
    }
    echo \'</select>\';
    echo \'<input name="action" type="hidden" value="the_ajax_hook" />
    <input id="submit_button" value = "Search" type="button" onClick="fetch_meta();" />
    </form>
    <div id="meta_list">
    Please select an option from the list
    </div>\';
 }

结束
在页面上显示使用ACF创建的自定义字段的所有值 - 小码农CODE - 行之有效找到问题解决它

在页面上显示使用ACF创建的自定义字段的所有值

时间:2012-03-27 作者:Bob

我正在使用Advanced Custom Fields / ACF 创建自定义字段。其中之一是显示一些选项的复选框列表(选项1、选项2、选项3…)。

现在,我想在前端的单独页面上显示此字段的所有选项,如下所示:

选项:
-选项1
-选项2
-选项3
-。。。

如何从ACF检索具有密钥的所有选项?

2 个回复
SO网友:Milo

这个get_field_object ACF函数可用于获取特定字段的信息和选项。

首先,需要输出特定字段的字段键。编辑字段组时,单击页面顶部的屏幕选项选项卡。您应该看到一个选项来切换字段键的显示(默认情况下隐藏以节省空间):

Field Key

获得键后,可以加载field对象并输出其值:

$field_key = "field_5039a99716d1d";
$field = get_field_object($field_key);

if( $field )
{
    echo \'<select name="\' . $field[\'key\'] . \'">\';
        foreach( $field[\'choices\'] as $k => $v )
        {
            echo \'<option value="\' . $k . \'">\' . $v . \'</option>\';
        }
    echo \'</select>\';
}

SO网友:SickHippie

如果您试图在选中复选框的情况下输出某些内容,请使用:

<?php if(in_array(\'news\', get_field(\'checkbox\') )): ?>
    <h1>News was ticked!</h1>
<?php endif; ?>
如果要仅显示选中选项的列表,请使用以下选项:

<p>Categories: <?php get_field(\'checkbox\'); ?></p>
这将为您提供一个值数组,您可以使用foreach 公告使用the_field(\'checkbox\') 将为您提供一个逗号分隔的选项字符串,您也可以将其拆分。

我还建议你去ACF\'s site 并查看文档。这种类型的大多数问题都会在那里得到相当详细的回答,开发人员也会活跃在他的支持论坛中。

编辑:如果您希望将可用选项列表输出到一个页面中,以生成动态查询,那么我只有一件事。这是我昨天刚刚编写的一篇文章,用于从给定的自定义字段键(使用ACF)中提取元数据列表。我已经为你做了相当通用的。还有一块JS用于处理ajax请求,还有一块相当复杂的php用于输出结果帖子。我真的无法重写这些内容——JS是标准的WP前向ajax调用/响应,而PHP是对我们显示的12个不同ACF字段(其中2个是转发器)的一堆条件检查。最基本的是这里的代码,按钮onClick 在单独的JS文件中调用ajax函数,ajax函数本身的php本质上为查询设置了一个参数数组,其中之一是$selectedOption$_POST[\'option\'] 作为meta\\u值。这会给new WP_Query( $args );, 然后在循环中使用,其输出通过add_action(\'wp_ajax_the_ajax_hook\', \'fetch_option_list\');add_action( \'wp_ajax_nopriv_the_ajax_hook\', \'fetch_option_list\' ); //for non logged-in users.

 // Get list of meta_values for given meta_key and post_type (page, post, custom post type)
 function meta_list($key = \'\', $type = \'\', $status = \'publish\'){
 global $wpdb;
    $r = $wpdb->get_col($wpdb->prepare( "
    SELECT DISTINCT pm.meta_value FROM {$wpdb->postmeta} pm
    LEFT JOIN {$wpdb->posts} p ON p.ID = pm.post_id
    WHERE pm.meta_key = \'%s\'
    AND p.post_status = \'%s\'
    AND p.post_type = \'%s\'
    ORDER BY pm.meta_value ASC", $key, $status, $type));
    return $r;
}

 // ADD EG A FORM TO THE PAGE
 function meta_ajax_frontend(){
    $formlist = meta_list(\'metakey\', \'posttype\');
    echo \'<form id="optionSelect">\';
    echo \'<select id="optionList" name="optionList">\';
    foreach($formlist as $fl => $val) {
        echo \'<option>\' . $val . \'</option>\';
    }
    echo \'</select>\';
    echo \'<input name="action" type="hidden" value="the_ajax_hook" />
    <input id="submit_button" value = "Search" type="button" onClick="fetch_meta();" />
    </form>
    <div id="meta_list">
    Please select an option from the list
    </div>\';
 }

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请