С произвольными полями позволяют работают функции WordPress
the_meta, get_post_meta, get_post_custom_values, get_post_custom,
get_post_custom_keys, add_post_meta, update_post_meta, delete_post_meta
Произвольное поле (custom field) представлено ключом (именем метаданных) и значением, причем для каждого ключа может быть добавлено несколько значений, несколько произвольных полей.
Новые поля и значения полей можно добавлять не только в коде, но и при создании/редактировании записи. (Если блок произвольных полей не виден внизу страницы, чтобы его показать, зайдите в Настройки экрана вверху страницы.) Чтобы использовать произвольные поля, нужно изменить код темы или написать плагин.
Функции WordPress для работы с произвольными полями
- the_meta() - извлекает для текущей записи метаданные (которые хранятся в БД в таблице wp_postmeta) в виде ненумерованного списка. Используется внутри цикла или в файле темы single.php.
!!! Игнорируются meta_keys (имена полей), которые начинаются с символа подчеркивания. - get_post_meta($post_id, $key, $single) - для записи с заданным $post_id (для текущей записи $post->ID)
если $single = false (по умолчанию) извлекает массив всех значений для заданного ключа $key
если $single = true, извлекает первое значение - get_post_custom_values($key, $post_id) - массив всех значений для заданного ключа $key для записи с заданным $post_id (по умолчанию для текущей записи)
$mykey_values = get_post_custom_values('my_key'); foreach ( $mykey_values as $key => $value ) { echo "$key => $value ('my_key')<br />"; }
- get_post_custom() - многомерный массив - все значения для всех ключей записи
<?php // Извлечение значений для записи с id=72 // для ключа my_custom_field: $custom_fields = get_post_custom(72); $my_custom_field = $custom_fields['my_custom_field']; foreach ( $my_custom_field as $key => $value ) echo $key . " => " . $value . "<br />"; ?>
- get_post_custom_keys($post_id) - массив всех ключей для записи с заданным $post_id (по умолчанию для текущей записи)
- add_post_meta($post_id, $meta_key, $meta_value, $unique) - добавляет поле с ключом $meta_key и значением $meta_value (массив сериализуется в строку) для записи любого типа (записи , страницы, произвольного типа) с заданным $post_id.
По умолчанию $unique = false. Если $unique = true, поле с именем (ключом) $meta_key будет добавлено, только если для данного $post_id оно еще не задано. - update_post_meta($post_id, $meta_key, $meta_value, $prev_value) - задает для записи с $post_id (обязательный параметр) для поля $meta_key значение $meta_value.
Если для $meta_key есть несколько значений (несколько полей), изменяются все значения или только первое значение $prev_value (если задан параметр $prev_value) .
Если поля с ключом $meta_key нет, вызывается add_post_meta, и это поле создается. - delete_post_meta($post_id, $meta_key, $meta_value) - удаляет все значения с заданным ключом или ключ и значение $meta_value (необязательный параметр).
Примеры
1. Первое значение для ключа key_1 для записи 76:
<?php $key_1_value = get_post_meta(76, 'key_1', true); ?>
2. Внутри цикла WordPress вывод изображения (url изображения хранится в произвольном поле "thumb").
<?php if ( get_post_meta($post->ID, 'thumb', true) ) : ?> <a href="<?php the_permalink() ?>" rel="bookmark"> <img src="<?php echo get_post_meta($post->ID, 'thumb', true) ?>" alt="<?php the_title(); ?>" /> </a> <?php endif; ?>
3. Изменение шаблона страницы
<?php update_post_meta($id, "_wp_page_template", "new_template.php"); ?>
Дополнительно: в разделе "Функции WordPress" также:
- URL и другая информация о блоге
- Функции, подключающие шаблоны
- Циклы WordPress
- wp_list_categories
- Вход в систему
- wp_list_pages - список ссылок на страницы
- Функции даты и времени в WordPress
- wp_link_pages - ссылки на страницы статьи с nextpage
- Шорткод [gallery]
- Функции для работы с метками
- Функции action, filter, plugin и локализация
- Функции для работы с типами данных (записей)
- Функция wp_insert_post - обновление/добавление записи заданного типа
- Административные меню
- Функции для работы с пользователями и ролями пользователей