✅ Новости WEB и WordPress, темы, плагины. Здесь мы делимся советами и лучшими решениями для веб-сайтов.

Использование функций вместо глобальных переменных: get_post_field

28

Поскольку PHP продолжает двигаться вперед, а WordPress (и его экономика разработчиков) работает над тем, чтобы начать использовать более современные функции, одной из вещей, которые мы все еще наблюдаем, является использование глобальных переменных в WordPress.

В какой-то степени это неизбежно: значительные части приложения были построены с использованием глобальных переменных, когда это было основным средством; другие части, тем не менее, продвинулись вперед, предоставляя классы или функции, которые избавляют нас от необходимости делать это.

Показательный пример: get_post_fieldэто надежная альтернатива использованию $postglobal, которая предоставляет большую часть той же информации в немного более современном (и, возможно, более безопасном) способе чтения данных.

Для многих использование чего-то вроде следующего является обычной практикой:

<?php
/**
 * Retrieves the slug for the current post via the current post's
 * post_name property.
 *
 * @return string the slug of the post.
 */
function getPostSlug(): string
{
  global $post;
  return $post->post_name;
}

Нередко можно увидеть что-то подобное get_the_title(get_the_ID());в коде, и это хорошо, но все еще бывают случаи, когда мы видим написанный код, который обращается к определенным аспектам текущего сообщения.

Использование функций вместо глобальных переменных: get_post_field

И я сомневаюсь, насколько необходимо, чтобы практика действительно  выполняла свою get_post_fieldфункцию. Из Справочника по коду:

Получить данные из поля сообщения на основе идентификатора сообщения.

Примерами поля сообщения будут «post_type», «post_status», «post_content» и т. д., основанные на свойствах объекта сообщения или ключевых именах.

Аналогичным примером этой функции может быть get_user_byфункция, в которой вы передаете определенную строку функции, для которой вы хотите получить информацию, а также идентификатор (или полный объект сообщения, но когда идентификатора достаточно, почему бы и нет?).

Разница здесь в том, что вы получите значение запрошенного поля или пустую строку (а не ошибку, ноль или ложь), когда запрос завершится ошибкой. Это означает, что нам нужно написать условное или защитное предложение для обработки такого случая.

Таким образом, для полного использования этой функции и кода может потребоваться несколько функций :

<?php

/**
 * Generates a boolean value based on the presence of a post slug.
 *
 * @return bool True if there is a slug; otherwise, false.
 */
function hasPostSlug(): bool
{
  return ('' === getPostSlug());
}

/**
 * Retrieves the slug for the current post via the get_post_field
 * API function.
 *
 * @return string the slug of the post.
 */
function getPostSlug(): string
{
  return get_post_field('post_name', get_the_ID());
}

Все это можно связать вместе следующим образом:

<?php

if (hasPostSlug()) {
  echo getPostSlug();
}

Смысл совместного использования такого кода заключается в том, чтобы помочь поделиться некоторыми из имеющихся у нас альтернатив глобальным переменным, чтобы также использовать API, которые существуют, но могут быть недостаточно использованы.

Источник записи: tommcfarlin.com

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