/ Плагины / Произвольные поля — ACF

Произвольные поля — ACF

HIT

30.09.2015

7268

Для добавления произвольных полей — нужно установить плагин Advanced Custom Fields.

Вывод различных типов полей

Для вывода содержимого дополнительных полей, нужно добавить код в шаблон вывода

Вывод текстового поля, dolg — псевдоним поля

<?php $text = get_field('dolg'); ?> <?php if($text!="") { echo "<p><small>Должность: </small><strong>".$text."</strong></p>"; } ?>

Вывод изображения, placeholder — псевдоним поля

<?php $image = get_field('placeholder'); if( !empty($image) ): ?> <img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" /> <?php endif; ?>

Вывод произвольных полей в шаблоне category.php

Вывод текстового поля в шаблоне category.php имеет небольшие особенности.

Надо выводить после конструкции:

<?php // номер рубрики $category_id = get_query_var( 'cat' ); // номер текущей страницы $page = get_query_var( 'paged' ); // данные о текущей категории $category = get_category( $category_id ); // данные о дочерних рубриках $children_categories = get_categories( "parent={$category_id}" ); ?>
<?php $text = get_field("dolg", 'category_'.$category_id); ?> <?php if($text!="") { echo "<p><small>Должность: </small><strong>".$text."</strong></p>"; } ?>

Вывод изображения категории
Если нет, изображения — выводить placeholder (не обязательно)

<?php if($imgcat1=get_field("mini-thumb",'category_'.$category_id)) : ?>
<div style="overflow: hidden;"><div id="post-div-pic" style="background-image: url(<?=$imgcat1['sizes']['large']?>);"></div></div>
<?php else: ?>
<div style="overflow: hidden;"><div id="post-div-pic" style="background-image: url(<?php bloginfo('template_url'); ?>/images/img-default-full.jpg);"></div></div>
<?php endif; ?>

Вывод полей в пользовательских таксономиях

Где-то вначале должен быть запрос

$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) );

и после этого код вывода изображения

<?php if($imgcat1=get_field("mini-thumb",$term)) : ?>
<div style="overflow: hidden;"><div id="post-div-pic" style="background-image: url(<?=$imgcat1['sizes']['large']?>);"></div></div>
<?php endif; ?>

Редактирование групп полей (шаблонов дополнительных полей)

Имена полям присваивать только английскими буквами.
Существует несколько вариантов автоформатирования полей: 1) без форматирования (тэги игнорируются), 2) без форматирования с 3) переносом строк, с форматированием (тэги интерпретируются).

Поле истина/ложь

Тип поля истина/ложь в зависимости от того ставим мы галку или нет дает возможность включать какую-либо функцию, конструкции php.

<?php if( get_field('thumb-background') ) : ?> галка стоит <?php else : ?> галка отсутствует <?php endif; ?>

Проверка функции

Можно сделать чтоб wordpress проверял есть ли данная функция, т.е. если отключить плагин ACF, то WP в местах вызова функций будет выдавать ошибку, избежать этого можно обернув такие функции условием

<?php if (function_exists('get_field')): ?> <?php endif; ?>

При этом (отключение плагина ACF) некоторые дополнительные поля все равно будут работать (Например: миниатюра категории)

Возможные проблемы

Не работает панель визуального редактора.

В моем случае проблема решилась легко — в панели пользователя был отключен визуальный редактор.

Некоторые значения в таблице не выводятся на сайт. Например, значения в таблице 30-0A000-A001 в блоке WISIWIG не выведутся на сайт, т.е.

с такими значениями не выведутся.

Мне пришлось добавлять перед значениями невидимый символ &shy;. Этот символ сохраняется если даже переключить с html-редактора на визуальный. А символ &nbsp; при этом исчезает.

Удаление ACF

Когда нужно удалить плагин ACF, но на сайте уже много страниц использующих созданные доп. поля, то нужно переопределить их на стандартные вызовы WP.

Meta_key полей используются те которые заданы при создании полей ACF. Например поля со слагом advantages, в БД будут так и записаны. Это относится и к post_meta и к term_meta.

Нужно выводить поля в шаблонах традиционным способом:

$advantages = get_post_meta($post->ID, 'advantages', 1);

А в админ части выводить эти поля для возможности дальнейшего редактирования:

// Произвольное поле Преимущества
add_action('admin_init', 'wysiwyg_register_advantages_box');
function wysiwyg_register_advantages_box() {
	add_meta_box('advantages_wysiwyg_id', __('Преимущества', 'wysiwyg') , 'advantages_wysiwyg', 'post');
}
 
function advantages_wysiwyg($post) {
	$content = get_post_meta($post->ID, 'advantages', true);
	wp_editor($content , 'advantages', array(
		"media_buttons" => true
	));
}
 
function advantages_wysiwyg_save_postdata($post_id) {
	if (isset($_POST['advantages'])) {	
		if (!empty($_POST['advantages'])) {
			$data = $_POST['advantages'];
			update_post_meta($post_id, 'advantages', $data);
		} else {
			delete_post_meta($post_id, 'advantages', $data);
		}
	}		
}
 
add_action('save_post', 'advantages_wysiwyg_save_postdata');

После удаления плагина в БД останется много мусора. У каждого созданного поля есть клон, который содержал связь — их нужно удалить. Например у поля advantages в БД есть столько же полей _ advantages. Удаляем их командами:

DELETE FROM `wp_postmeta` WHERE `meta_key` = '_advantages'; // для post_meta
DELETE FROM `wp_termmeta` WHERE `meta_key` = '_mini-thumb'; // для term_meta
[site-socialshare]
  • Комментарии
  • Вложения

Добавить комментарий

Notice: Функция WP_Styles::add вызвана неправильно. Стиль с дескриптором "editor-buttons" был поставлен в очередь с незарегистрированными зависимостями: dashicons. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.9.1.) in /home/t/tiberi6w/opttour.ru/public_html/wp-includes/functions.php on line 6131

Пока нет комментариев. Будь первым!

Произвольные поля — ACF
Сопутствующие BuddyPress плагины
Рекомендации для васСопутствующие BuddyPress плагиныOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.