Произвольные поля (custom fields)

С произвольными полями позволяют работают функции 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");
?>

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *