本文整理汇总了PHP中acf_get_array函数的典型用法代码示例。如果您正苦于以下问题:PHP acf_get_array函数的具体用法?PHP acf_get_array怎么用?PHP acf_get_array使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了acf_get_array函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: render_field
function render_field($field)
{
// decode value (convert to array)
$field['value'] = acf_get_array($field['value'], false);
// hiden input
acf_hidden_input(array('type' => 'hidden', 'name' => $field['name']));
// vars
$i = 0;
$li = '';
$all_checked = true;
// checkbox saves an array
$field['name'] .= '[]';
// foreach choices
if (!empty($field['choices'])) {
foreach ($field['choices'] as $value => $label) {
// increase counter
$i++;
// vars
$atts = array('type' => 'checkbox', 'id' => $field['id'], 'name' => $field['name'], 'value' => $value);
// is choice selected?
if (in_array($value, $field['value'])) {
$atts['checked'] = 'checked';
} else {
$all_checked = false;
}
if (isset($field['disabled']) && acf_in_array($value, $field['disabled'])) {
$atts['disabled'] = 'disabled';
}
// each input ID is generated with the $key, however, the first input must not use $key so that it matches the field's label for attribute
if ($i > 1) {
$atts['id'] .= '-' . $value;
}
// append HTML
$li .= '<li><label><input ' . acf_esc_attr($atts) . '/>' . $label . '</label></li>';
}
// toggle all
if ($field['toggle']) {
// vars
$label = __("Toggle All", 'acf');
$atts = array('type' => 'checkbox', 'class' => 'acf-checkbox-toggle');
// custom label
if (is_string($field['toggle'])) {
$label = $field['toggle'];
}
// checked
if ($all_checked) {
$atts['checked'] = 'checked';
}
// append HTML
$li = '<li><label><input ' . acf_esc_attr($atts) . '/>' . $label . '</label></li>' . $li;
}
}
// class
$field['class'] .= ' acf-checkbox-list';
$field['class'] .= $field['layout'] == 'horizontal' ? ' acf-hl' : ' acf-bl';
// return
echo '<ul ' . acf_esc_attr(array('class' => $field['class'])) . '>' . $li . '</ul>';
}
示例2: format_value
public function format_value($value, $post_id, $field)
{
// bail early if no value
if (empty($value)) {
return $value;
}
// force value to array
$value = acf_get_array($value);
// convert values to int
$value = array_map('intval', $value);
// load posts if needed
if ($field['return_format'] == 'object') {
$value = ACF_API_Fields()->api->get_posts($field, array('include' => $value));
}
// convert back from array if neccessary
if (!$field['multiple']) {
$value = array_shift($value);
}
// return value
return $value;
}
示例3: update_value
function update_value($value, $post_id, $field)
{
// validate
if (empty($value)) {
return $value;
}
// force value to array
$value = acf_get_array($value);
// array
foreach ($value as $k => $v) {
// object?
if (is_object($v) && isset($v->ID)) {
$value[$k] = $v->ID;
}
}
// save value as strings, so we can clearly search for them in SQL LIKE statements
$value = array_map('strval', $value);
// return
return $value;
}
示例4: update_value
function update_value($value, $post_id, $field)
{
if ($post_id === $GLOBALS['post_id']) {
$new_value = $this->clean_post_value($value);
$old_value = $this->clean_post_value(get_field($field['key']));
$new_values = array();
$missing_values = array();
if (!empty($new_value) && !empty($old_value)) {
$new_values = array_diff($new_value, $old_value);
$missing_values = array_diff($old_value, $new_value);
} else {
if (!empty($new_value)) {
$new_values = array_map('strval', $new_value);
}
if (!empty($old_value)) {
$missing_values = array_map('strval', $old_value);
}
}
foreach ($new_values as $value_add) {
$existing_value = get_field($field['key'], $value_add);
if (!empty($existing_value)) {
$existing_value[] = $post_id;
} else {
$existing_value = array($post_id);
}
update_field($field['key'], $existing_value, $value_add);
}
foreach ($missing_values as $value_remove) {
$existing_value = get_field($field['key'], $value_remove);
if (!empty($existing_value)) {
if ($existing_value[0] instanceof WP_Post) {
$old_existing_value = $existing_value;
$existing_value = array();
foreach ($old_existing_value as $post) {
if ($post->ID !== $post_id) {
$existing_value[] = $post;
}
}
} else {
$existing_value = array_diff($existing_val, array($post_id));
}
update_field($field['key'], $existing_value, $value_remove);
}
}
}
// validate
if (empty($value)) {
return $value;
}
// force value to array
$value = acf_get_array($value);
// array
foreach ($value as $k => $v) {
// object?
if (is_object($v) && isset($v->ID)) {
$value[$k] = $v->ID;
}
}
// save value as strings, so we can clearly search for them in SQL LIKE statements
$value = array_map('strval', $value);
// return
return $value;
}
示例5: render_field
function render_field($field)
{
$taxonomies = array();
$taxonomies = acf_get_array($taxonomies);
$taxonomies = acf_get_pretty_taxonomies($taxonomies);
$taxonomy_terms = acf_get_taxonomy_terms();
$selected_taxonomies = array();
$terms = array();
$slug_name = !empty($field['choices']) ? $field['choices'] : array_keys(acf_get_pretty_taxonomies());
if ($field['tax_type'] == 'Term') {
// select terms
foreach ($slug_name as $k1 => $v1) {
$terms = array_merge($terms, get_terms($v1, array('hide_empty' => false)));
foreach ($taxonomies as $k2 => $v2) {
if ($v1 == $k2) {
$field['choices'][$k1] = $v2;
}
}
}
foreach ($field['choices'] as $k1 => $v1) {
foreach ($taxonomy_terms as $k2 => $v2) {
if ($v1 == $k2) {
$selected_taxonomies[$v1] = $taxonomy_terms[$k2];
}
}
}
} else {
//select taxonomies
$taxonomies = array();
foreach ($slug_name as $tax_name) {
// only use allowed taxonomies
$taxonomies[$tax_name] = get_taxonomy($tax_name);
}
foreach ($taxonomies as $taxonomy) {
$selected_taxonomies[$taxonomy->name] = $taxonomy->label;
}
}
$field['choices'] = $selected_taxonomies;
// add empty value (allows '' to be selected)
if (empty($field['value'])) {
$field['value'] = '';
$field['value']['cat'] = '';
}
// placeholder
if (empty($field['placeholder'])) {
$field['placeholder'] = __("Select", 'acf');
}
// vars
$atts = array('id' => $field['id'], 'class' => $field['class'] . ' js-multi-taxonomy-select2', 'name' => $field['name'], 'data-ui' => $field['ui'], 'data-ajax' => $field['ajax'], 'data-placeholder' => $field['placeholder'], 'data-allow_null' => $field['allow_null']);
// hidden input
if ($field['ui']) {
acf_hidden_input(array('type' => 'hidden', 'id' => $field['id'], 'name' => $field['name'], 'value' => implode(',', $field['value'])));
} elseif ($field['multiple']) {
acf_hidden_input(array('type' => 'hidden', 'name' => $field['name']));
}
// ui
if ($field['ui']) {
$atts['disabled'] = 'disabled';
$atts['class'] .= ' acf-hidden';
}
// special atts
foreach (array('readonly', 'disabled') as $k) {
if (!empty($field[$k])) {
$atts[$k] = $k;
}
}
// vars
$els = array();
$choices = array();
// loop through values and add them as options
if (!empty($field['choices'])) {
foreach ($field['choices'] as $k => $v) {
// allowed taxonomies
if (is_array($v)) {
// optgroup
$els[] = array('type' => 'optgroup', 'label' => $k);
if (!empty($v)) {
foreach ($v as $k2 => $v2) {
$strip_v2_hyphen = preg_replace('#-\\s?#', '', $v2);
// Child categories have hyphens before the name, we need to remove them in order to match them
if ($field['type_value']) {
// value = term ID
foreach ($terms as $key => $val) {
if ($val->name == $strip_v2_hyphen) {
$els[] = array('type' => 'option', 'value' => $val->term_id, 'label' => $v2, 'selected' => $slct = $val->term_id == $field['value'] ? "selected" : "");
}
}
} else {
// value = term slug
preg_match('#(?::)(.*)#', $k2, $value);
// originally returns 'taxonomy:term-slug' this removes 'taxonomy:'
$els[] = array('type' => 'option', 'value' => $value[1], 'label' => $v2, 'selected' => $slct = $value[1] == $field['value'] ? "selected" : "");
}
$choices[] = $k2;
}
}
$els[] = array('type' => '/optgroup');
} else {
// value = Taxonomy Slug
$els[] = array('type' => 'option', 'value' => $k, 'label' => $v, 'selected' => $slct = $k == $field['value'] ? "selected" : "");
//.........这里部分代码省略.........
示例6: load_value
function load_value($value, $post_id, $field)
{
// bail early if no value
if (empty($value) || empty($field['layouts'])) {
return $value;
}
// value must be an array
$value = acf_get_array($value);
// vars
$rows = array();
// populate $layouts
$layouts = array();
foreach (array_keys($field['layouts']) as $i) {
// get layout
$layout = $field['layouts'][$i];
// append to $layouts
$layouts[$layout['name']] = $layout['sub_fields'];
}
// loop through rows
foreach ($value as $i => $l) {
// append to $values
$rows[$i] = array();
$rows[$i]['acf_fc_layout'] = $l;
// bail early if layout deosnt contain sub fields
if (empty($layouts[$l])) {
continue;
}
// get layout
$layout = $layouts[$l];
// loop through sub fields
foreach (array_keys($layout) as $j) {
// get sub field
$sub_field = $layout[$j];
// update full name
$sub_field['name'] = "{$field['name']}_{$i}_{$sub_field['name']}";
// get value
$sub_value = acf_get_value($post_id, $sub_field);
// add value
$rows[$i][$sub_field['key']] = $sub_value;
}
// foreach
}
// foreach
// return
return $rows;
}
示例7: acf_get_valid_terms
function acf_get_valid_terms($terms = false, $taxonomy = 'category')
{
// bail early if function does not yet exist or
if (!function_exists('wp_get_split_term') || empty($terms)) {
return $terms;
}
// vars
$is_array = is_array($terms);
// force into array
$terms = acf_get_array($terms);
// force ints
$terms = array_map('intval', $terms);
// attempt to find new terms
foreach ($terms as $i => $term_id) {
$new_term_id = wp_get_split_term($term_id, $taxonomy);
if ($new_term_id) {
$terms[$i] = $new_term_id;
}
}
// revert array if needed
if (!$is_array) {
$terms = $terms[0];
}
// return
return $terms;
}
示例8: get_clone_setting_choices
function get_clone_setting_choices($value)
{
// vars
$choices = array();
// bail early if no $value
if (empty($value)) {
return $choices;
}
// force value to array
$value = acf_get_array($value);
// loop
foreach ($value as $v) {
$choices[$v] = $this->get_clone_setting_choice($v);
}
// return
return $choices;
}
示例9: render_field
function render_field($field)
{
// convert value to array
$field['value'] = acf_get_array($field['value'], false);
// add empty value (allows '' to be selected)
if (empty($field['value'])) {
$field['value'][''] = '';
}
// placeholder
if (empty($field['placeholder'])) {
$field['placeholder'] = __("Select", 'acf');
}
// vars
$atts = array('id' => $field['id'], 'class' => $field['class'], 'name' => $field['name'], 'data-ui' => $field['ui'], 'data-ajax' => $field['ajax'], 'data-multiple' => $field['multiple'], 'data-placeholder' => $field['placeholder'], 'data-allow_null' => $field['allow_null']);
// ui
if ($field['ui']) {
$atts['disabled'] = 'disabled';
$atts['class'] .= ' acf-hidden';
}
// multiple
if ($field['multiple']) {
$atts['multiple'] = 'multiple';
$atts['size'] = 5;
$atts['name'] .= '[]';
}
// special atts
foreach (array('readonly', 'disabled') as $k) {
if (!empty($field[$k])) {
$atts[$k] = $k;
}
}
// vars
$els = array();
$choices = array();
// loop through values and add them as options
if (!empty($field['choices'])) {
foreach ($field['choices'] as $k => $v) {
if (is_array($v)) {
// optgroup
$els[] = array('type' => 'optgroup', 'label' => $k);
if (!empty($v)) {
foreach ($v as $k2 => $v2) {
$els[] = array('type' => 'option', 'value' => $k2, 'label' => $v2, 'selected' => in_array($k2, $field['value']));
$choices[] = $k2;
}
}
$els[] = array('type' => '/optgroup');
} else {
$els[] = array('type' => 'option', 'value' => $k, 'label' => $v, 'selected' => in_array($k, $field['value']));
$choices[] = $k;
}
}
}
// hidden input
if ($field['ui']) {
// restirct value
$v = array_intersect($field['value'], $choices);
if ($field['multiple']) {
$v = implode('||', $v);
} else {
$v = acf_maybe_get($v, 0, '');
}
acf_hidden_input(array('type' => 'hidden', 'id' => $field['id'] . '-input', 'name' => $field['name'], 'value' => $v));
} elseif ($field['multiple']) {
acf_hidden_input(array('type' => 'hidden', 'id' => $field['id'] . '-input', 'name' => $field['name']));
}
// null
if ($field['allow_null']) {
array_unshift($els, array('type' => 'option', 'value' => '', 'label' => '- ' . $field['placeholder'] . ' -'));
}
// html
echo '<select ' . acf_esc_attr($atts) . '>';
// construct html
if (!empty($els)) {
foreach ($els as $el) {
// extract type
$type = acf_extract_var($el, 'type');
if ($type == 'option') {
// get label
$label = acf_extract_var($el, 'label');
// validate selected
if (acf_extract_var($el, 'selected')) {
$el['selected'] = 'selected';
}
// echo
echo '<option ' . acf_esc_attr($el) . '>' . $label . '</option>';
} else {
// echo
echo '<' . $type . ' ' . acf_esc_attr($el) . '>';
}
}
}
echo '</select>';
}
示例10: render_field
public function render_field($field)
{
// convert value to array
$field['value'] = acf_get_array($field['value'], false);
// add empty value (allows '' to be selected)
if (empty($field['value'])) {
$field['value'][''] = '';
}
// placeholder
if (empty($field['placeholder'])) {
$field['placeholder'] = __("Select", 'acf');
}
// vars
$atts = array('id' => $field['id'], 'class' => $field['class'], 'name' => $field['name'], 'data-multiple' => $field['multiple'], 'data-placeholder' => $field['placeholder'], 'data-allow_null' => $field['allow_null']);
// multiple
if ($field['multiple']) {
$atts['multiple'] = 'multiple';
$atts['size'] = 5;
$atts['name'] .= '[]';
}
// special atts
foreach (array('readonly', 'disabled') as $k) {
if (!empty($field[$k])) {
$atts[$k] = $k;
}
}
// vars
$els = array();
// $choices = array();
$posttypes = $this->post_type_options();
foreach ($posttypes as $pt) {
$els[] = array('type' => 'option', 'value' => $pt['value'], 'label' => $pt['label'], 'selected' => in_array($pt['value'], $field['value']));
}
// null
if ($field['allow_null']) {
array_unshift($els, array('type' => 'option', 'value' => '', 'label' => '- ' . $field['placeholder'] . ' -'));
}
// html
echo '<select ' . acf_esc_attr($atts) . '>';
// construct html
if (!empty($els)) {
foreach ($els as $el) {
// extract type
$type = acf_extract_var($el, 'type');
if ($type == 'option') {
// get label
$label = acf_extract_var($el, 'label');
// validate selected
if (acf_extract_var($el, 'selected')) {
$el['selected'] = 'selected';
}
// echo
echo '<option ' . acf_esc_attr($el) . '>' . $label . '</option>';
} else {
// echo
echo '<' . $type . ' ' . acf_esc_attr($el) . '>';
}
}
}
echo '</select>';
}
示例11: display_quickedit_field
function display_quickedit_field($column, $post_type, $field)
{
?>
<fieldset class="inline-edit-col-left inline-edit-<?php
echo $post_type;
?>
"><?php
?>
<div class="inline-edit-col column-<?php
echo $column;
?>
"><?php
?>
<label class="inline-edit-group"><?php
?>
<span class="title"><?php
echo $field['label'];
?>
</span><?php
?>
<span class="input-text-wrap"><?php
$input_atts = array('data-acf-field-key' => $field['key'], 'name' => $this->post_field_prefix . $column);
switch ($field['type']) {
case 'checkbox':
$input_atts += array('class' => 'acf-quick-edit', 'id' => $this->post_field_prefix . $column);
$field['value'] = \acf_get_array($field['value'], false);
$input_atts['name'] .= '[]';
foreach ($field['choices'] as $value => $label) {
$atts = array('type' => 'checkbox', 'value' => $value) + $input_atts;
if (in_array($value, $field['value'])) {
$atts['checked'] = 'checked';
} else {
$all_checked = false;
}
$atts['id'] .= '-' . $value;
echo '<label><input ' . \acf_esc_attr($atts) . '/>' . $label . '</label>';
}
break;
case 'select':
$input_atts += array('class' => 'acf-quick-edit widefat', 'id' => $this->post_field_prefix . $column);
if ($field['multiple']) {
$input_atts['multiple'] = 'multiple';
}
?>
<select <?php
echo \acf_esc_attr($input_atts);
?>
><?php
if ($field['allow_null']) {
echo '<option value="">' . '- ' . \__('Select', 'acf-quick-edit-fields') . ' -';
}
foreach ($field['choices'] as $name => $label) {
echo '<option value="' . $name . '">' . $label;
}
?>
</select><?php
break;
case 'radio':
?>
<ul class="acf-radio-list<?php
echo $field['other_choice'] ? ' other' : '';
?>
" data-acf-field-key="<?php
echo $field['key'];
?>
"><?php
foreach ($field['choices'] as $name => $value) {
?>
<li><label for="<?php
echo $this->post_field_prefix . $column . '-' . $name;
?>
"><?php
?>
<input id="<?php
echo $this->post_field_prefix . $column . '-' . $name;
?>
" type="radio" value="<?php
echo $name;
?>
"
class="acf-quick-edit" data-acf-field-key="<?php
echo $field['key'];
?>
"
name="<?php
echo $this->post_field_prefix . $column;
?>
" /><?php
echo $value;
?>
</label></li><?php
}
if ($field['other_choice']) {
?>
<li><label for="<?php
echo $this->post_field_prefix . $column . '-other';
?>
"><?php
?>
<input id="<?php
//.........这里部分代码省略.........
示例12: acf_get_post_types
if ($width['post_type']) {
if (!empty($field['post_type'])) {
$post_types = $field['post_type'];
} else {
$post_types = acf_get_post_types();
}
$post_types = acf_get_pretty_post_types($post_types);
}
// taxonomy filter
$taxonomies = array();
$term_groups = array();
if ($width['taxonomy']) {
// taxonomies
if (!empty($field['taxonomy'])) {
// get the field's terms
$term_groups = acf_get_array($field['taxonomy']);
$term_groups = acf_decode_taxonomy_terms($term_groups);
// update taxonomies
$taxonomies = array_keys($term_groups);
} elseif (!empty($field['post_type'])) {
// loop over post types and find connected taxonomies
foreach ($field['post_type'] as $post_type) {
$post_taxonomies = get_object_taxonomies($post_type);
// bail early if no taxonomies
if (empty($post_taxonomies)) {
continue;
}
foreach ($post_taxonomies as $post_taxonomy) {
if (!in_array($post_taxonomy, $taxonomies)) {
$taxonomies[] = $post_taxonomy;
}
示例13: render_field
function render_field($field)
{
// echo "<pre>";
// print_r($field);
// echo "</pre>";
$taxonomies = array();
$taxonomies = acf_get_array($taxonomies);
$taxonomies = acf_get_pretty_taxonomies($taxonomies);
$all_taxonomies = acf_get_taxonomy_terms();
$selected_taxonomies = array();
$terms = array();
$slug_name = !empty($field['choices']) ? $field['choices'] : array_keys(acf_get_pretty_taxonomies());
foreach ($slug_name as $k1 => $v1) {
$terms = array_merge($terms, get_terms($v1, array('hide_empty' => false)));
foreach ($taxonomies as $k2 => $v2) {
if ($v1 == $k2) {
$field['choices'][$k1] = $v2;
}
}
}
foreach ($field['choices'] as $k1 => $v1) {
foreach ($all_taxonomies as $k2 => $v2) {
if ($v1 == $k2) {
$selected_taxonomies[$v1] = $all_taxonomies[$k2];
}
}
}
$field['choices'] = $selected_taxonomies;
// convert value to array
// $field['value'] = acf_force_type_array($field['value']);
// add empty value (allows '' to be selected)
if (empty($field['value'])) {
$field['value'][''] = '';
$field['value']['cat'] = '';
}
// placeholder
if (empty($field['placeholder'])) {
$field['placeholder'] = __("Select", 'acf');
}
// vars
$atts = array('id' => $field['id'], 'class' => $field['class'] . ' js-multi-taxonomy-select2', 'name' => $field['name'], 'data-ui' => $field['ui'], 'data-ajax' => $field['ajax'], 'data-multiple' => $field['multiple'], 'data-placeholder' => $field['placeholder'], 'data-allow_null' => $field['allow_null']);
// hidden input
if ($field['ui']) {
acf_hidden_input(array('type' => 'hidden', 'id' => $field['id'], 'name' => $field['name'], 'value' => implode(',', $field['value'])));
} elseif ($field['multiple']) {
acf_hidden_input(array('type' => 'hidden', 'name' => $field['name']));
}
// ui
if ($field['ui']) {
$atts['disabled'] = 'disabled';
$atts['class'] .= ' acf-hidden';
}
// multiple
if ($field['multiple']) {
$atts['multiple'] = 'multiple';
$atts['size'] = 5;
$atts['name'] .= '[]';
}
// special atts
foreach (array('readonly', 'disabled') as $k) {
if (!empty($field[$k])) {
$atts[$k] = $k;
}
}
// vars
$els = array();
$choices = array();
if ($field['data_type']) {
// loop through values and add them as options
if (!empty($field['choices'])) {
foreach ($field['choices'] as $k => $v) {
if (is_array($v)) {
// optgroup
$els[] = array('type' => 'optgroup', 'label' => $k);
if (!empty($v)) {
foreach ($v as $k2 => $v2) {
if ($field['type_value']) {
foreach ($terms as $key => $val) {
if ($val->name == $v2) {
$els[] = array('type' => 'option', 'value' => $val->term_id, 'label' => $v2, 'selected' => $slct = $val->term_id == $field['value'] ? "selected" : "");
}
}
} else {
$els[] = array('type' => 'option', 'value' => $k2, 'label' => $v2, 'selected' => $slct = $k2 == $field['value'] ? "selected" : "");
}
$choices[] = $k2;
}
}
$els[] = array('type' => '/optgroup');
} else {
$els[] = array('type' => 'option', 'value' => $k, 'label' => $v, 'selected' => $slct = $k == $field['value'] ? "selected" : "");
$choices[] = $k;
}
}
}
// null
if ($field['allow_null']) {
array_unshift($els, array('type' => 'option', 'value' => '', 'label' => '- ' . $field['placeholder'] . ' -'));
}
// html
//.........这里部分代码省略.........
示例14: render_field
function render_field($field)
{
// vars
$sub_fields = $field['sub_fields'];
$value = acf_get_array($field['value']);
$show_order = true;
$show_add = true;
$show_remove = true;
// bail early if no sub fields
if (empty($sub_fields)) {
return;
}
// div
$div = array('class' => 'acf-repeater', 'data-min' => $field['min'], 'data-max' => $field['max']);
// empty
if (empty($value)) {
$div['class'] .= ' -empty';
}
// If there are less values than min, populate the extra values
if ($field['min']) {
$value = array_pad($value, $field['min'], array());
}
// If there are more values than man, remove some values
if ($field['max']) {
$value = array_slice($value, 0, $field['max']);
// if max 1 row, don't show order
if ($field['max'] == 1) {
$show_order = false;
}
// if max == min, don't show add or remove buttons
if ($field['max'] <= $field['min']) {
$show_remove = false;
$show_add = false;
}
}
// setup values for row clone
$value['acfcloneindex'] = array();
// button label
if ($field['button_label'] === '') {
$field['button_label'] = __('Add Row', 'acf');
}
// field wrap
$el = 'td';
$before_fields = '';
$after_fields = '';
if ($field['layout'] == 'row') {
$el = 'div';
$before_fields = '<td class="acf-fields -left">';
$after_fields = '</td>';
} elseif ($field['layout'] == 'block') {
$el = 'div';
$before_fields = '<td class="acf-fields">';
$after_fields = '</td>';
}
// layout
$div['class'] .= ' -' . $field['layout'];
// hidden input
acf_hidden_input(array('type' => 'hidden', 'name' => $field['name']));
// collapsed
if ($field['collapsed']) {
// add target class
foreach ($sub_fields as $i => $sub_field) {
// bail early if no match
if ($sub_field['key'] !== $field['collapsed']) {
continue;
}
// class
$sub_field['wrapper']['class'] .= ' -collapsed-target';
// update
$sub_fields[$i] = $sub_field;
}
}
?>
<div <?php
acf_esc_attr_e($div);
?>
>
<table class="acf-table">
<?php
if ($field['layout'] == 'table') {
?>
<thead>
<tr>
<?php
if ($show_order) {
?>
<th class="acf-row-handle"></th>
<?php
}
?>
<?php
foreach ($sub_fields as $sub_field) {
// prepare field (allow sub fields to be removed)
$sub_field = acf_prepare_field($sub_field);
// bail ealry if no field
if (!$sub_field) {
continue;
}
//.........这里部分代码省略.........
示例15: get_ajax_query
function get_ajax_query($options = array())
{
// defaults
$options = acf_parse_args($options, array('post_id' => 0, 's' => '', 'field_key' => '', 'paged' => 1));
// load field
$field = acf_get_field($options['field_key']);
if (!$field) {
return false;
}
// vars
$results = array();
$args = array();
$s = false;
$is_search = false;
// paged
$args['posts_per_page'] = 20;
$args['paged'] = $options['paged'];
// search
if ($options['s'] !== '') {
// strip slashes (search may be integer)
$s = wp_unslash(strval($options['s']));
// update vars
$args['s'] = $s;
$is_search = true;
}
// post_type
if (!empty($field['post_type'])) {
$args['post_type'] = acf_get_array($field['post_type']);
} else {
$args['post_type'] = acf_get_post_types();
}
// taxonomy
if (!empty($field['taxonomy'])) {
// vars
$terms = acf_decode_taxonomy_terms($field['taxonomy']);
// append to $args
$args['tax_query'] = array();
// now create the tax queries
foreach ($terms as $k => $v) {
$args['tax_query'][] = array('taxonomy' => $k, 'field' => 'slug', 'terms' => $v);
}
}
// filters
$args = apply_filters('acf/fields/post_object/query', $args, $field, $options['post_id']);
$args = apply_filters('acf/fields/post_object/query/name=' . $field['name'], $args, $field, $options['post_id']);
$args = apply_filters('acf/fields/post_object/query/key=' . $field['key'], $args, $field, $options['post_id']);
// get posts grouped by post type
$groups = acf_get_grouped_posts($args);
// bail early if no posts
if (empty($groups)) {
return false;
}
// loop
foreach (array_keys($groups) as $group_title) {
// vars
$posts = acf_extract_var($groups, $group_title);
// data
$data = array('text' => $group_title, 'children' => array());
// convert post objects to post titles
foreach (array_keys($posts) as $post_id) {
$posts[$post_id] = $this->get_post_title($posts[$post_id], $field, $options['post_id'], $is_search);
}
// order posts by search
if ($is_search && empty($args['orderby'])) {
$posts = acf_order_by_search($posts, $args['s']);
}
// append to $data
foreach (array_keys($posts) as $post_id) {
$data['children'][] = $this->get_post_result($post_id, $posts[$post_id]);
}
// append to $results
$results[] = $data;
}
// optgroup or single
if (count($args['post_type']) == 1) {
$results = $results[0]['children'];
}
// vars
$response = array('results' => $results, 'limit' => $args['posts_per_page']);
// return
return $response;
}