Answers:
该get_field_object
ACF功能可以被用来获取信息和选项的特定字段。
首先,您需要要输出的特定字段的字段关键字。编辑字段组时,单击页面顶部的屏幕选项标签。您应该看到一个用于切换字段键显示的选项(默认情况下,该键处于隐藏状态以节省空间):
获得密钥后,可以加载字段对象并输出其值:
$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>';
}
如果在选中复选框的情况下尝试输出某些内容,请使用:
<?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的站点并阅读文档。大多数此类问题都会在此处得到详细解答,并且开发人员也积极参与其支持论坛。
编辑:如果您想要输出到页面中以生成动态查询的可用选项列表,我就是这样。这是我昨天构建的,用于从给定的自定义字段键(使用ACF)中提取元值列表。我已经为您量身定做了。还有另一个用于处理ajax请求的JS,还有一个相当复杂的php,用于输出结果帖子。我无法真正重写它们-JS是标准的WP前向ajax调用/响应,而PHP则是对我们要显示的12个不同ACF字段(其中两个是中继器)的条件检查的混乱。基本内容是这里的代码,按钮onClick
在一个单独的JS文件中调用ajax函数,而ajax函数本身的php本质上为查询设置了参数数组,$selectedOption
或$_POST['option']
作为meta_value。将其馈送到a new WP_Query( $args );
,然后将其用于循环中,其输出通过add_action('wp_ajax_the_ajax_hook', 'fetch_option_list');
和反馈回js 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>';
}
foreach
to循环浏览。后面的功能通过ajax带来帖子列表,但我忽略了这一点