acf_field_relationship::render_field() public ACF 3.6
Create the HTML interface for your field
{} Это метод класса: acf_field_relationship{}
Хуков нет.
Возвращает
Null. Ничего.
Использование
$acf_field_relationship = new acf_field_relationship();
$acf_field_relationship->render_field( $field );
-
- ($field) (обязательный)
- an array holding all the field's data
Список изменений
Код acf_field_relationship::render_field() acf field relationship::render field
ACF 5.9.1
<?php
function render_field( $field ) {
// vars
$post_type = acf_get_array( $field['post_type'] );
$taxonomy = acf_get_array( $field['taxonomy'] );
$filters = acf_get_array( $field['filters'] );
// filters
$filter_count = count($filters);
$filter_post_type_choices = array();
$filter_taxonomy_choices = array();
// post_type filter
if( in_array('post_type', $filters) ) {
$filter_post_type_choices = array(
'' => __('Select post type', 'acf')
) + acf_get_pretty_post_types( $post_type );
}
// taxonomy filter
if( in_array('taxonomy', $filters) ) {
$term_choices = array();
$filter_taxonomy_choices = array(
'' => __('Select taxonomy', 'acf')
);
// check for specific taxonomy setting
if( $taxonomy ) {
$terms = acf_get_encoded_terms( $taxonomy );
$term_choices = acf_get_choices_from_terms( $terms, 'slug' );
// if no terms were specified, find all terms
} else {
// restrict taxonomies by the post_type selected
$term_args = array();
if( $post_type ) {
$term_args['taxonomy'] = acf_get_taxonomies(array(
'post_type' => $post_type
));
}
// get terms
$terms = acf_get_grouped_terms( $term_args );
$term_choices = acf_get_choices_from_grouped_terms( $terms, 'slug' );
}
// append term choices
$filter_taxonomy_choices = $filter_taxonomy_choices + $term_choices;
}
// div attributes
$atts = array(
'id' => $field['id'],
'class' => "acf-relationship {$field['class']}",
'data-min' => $field['min'],
'data-max' => $field['max'],
'data-s' => '',
'data-paged' => 1,
'data-post_type' => '',
'data-taxonomy' => '',
);
?>
<div <?php acf_esc_attr_e($atts); ?>>
<?php acf_hidden_input( array('name' => $field['name'], 'value' => '') ); ?>
<?php
/* filters */
if( $filter_count ): ?>
<div class="filters -f<?php echo esc_attr($filter_count); ?>">
<?php
/* search */
if( in_array('search', $filters) ): ?>
<div class="filter -search">
<?php acf_text_input( array('placeholder' => __("Search...",'acf'), 'data-filter' => 's') ); ?>
</div>
<?php endif;
/* post_type */
if( in_array('post_type', $filters) ): ?>
<div class="filter -post_type">
<?php acf_select_input( array('choices' => $filter_post_type_choices, 'data-filter' => 'post_type') ); ?>
</div>
<?php endif;
/* post_type */
if( in_array('taxonomy', $filters) ): ?>
<div class="filter -taxonomy">
<?php acf_select_input( array('choices' => $filter_taxonomy_choices, 'data-filter' => 'taxonomy') ); ?>
</div>
<?php endif; ?>
</div>
<?php endif; ?>
<div class="selection">
<div class="choices">
<ul class="acf-bl list choices-list"></ul>
</div>
<div class="values">
<ul class="acf-bl list values-list">
<?php if( !empty($field['value']) ):
// get posts
$posts = acf_get_posts(array(
'post__in' => $field['value'],
'post_type' => $field['post_type']
));
// loop
foreach( $posts as $post ): ?>
<li>
<?php acf_hidden_input( array('name' => $field['name'].'[]', 'value' => $post->ID) ); ?>
<span data-id="<?php echo esc_attr($post->ID); ?>" class="acf-rel-item">
<?php echo acf_esc_html( $this->get_post_title( $post, $field ) ); ?>
<a href="#" class="acf-icon -minus small dark" data-name="remove_item"></a>
</span>
</li>
<?php endforeach; ?>
<?php endif; ?>
</ul>
</div>
</div>
</div>
<?php
}