WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru
функция не описана

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

Список изменений

С версии 3.6 Введена.

Код 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
}