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

Загрузить все настраиваемые поля WordPress с помощью запроса к базе данных

18

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

Один из вариантов использования, в котором это может быть полезно, — это когда вам нужно получить набор данных одного типа. Показательный пример: скажем, вам нужно загрузить все настраиваемые поля WordPress.

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

Загрузить все настраиваемые поля WordPress

Есть несколько моментов, на которые следует обратить внимание в отношении настраиваемых полей, связанных с данным сообщением:

  • настраиваемые поля хранятся в метаданных поста,
  • настраиваемые поля считаются закрытыми, поэтому они имеют префикс подчеркивания,
  • Стандартам кодирования WordPress это не понравится (поэтому вам, возможно, придется игнорировать стандарты)

Вы можете прочитать все о них в Кодексе.

И да, легко получить всю пользовательскую информацию для одного поста. Но если вы работаете над проектом, в котором вам нужно получить все настраиваемые поля, а именно те, которые являются закрытыми, вам нужно убедиться, что вы запрашиваете строки, начинающиеся с подчеркивания.

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

<?php

function get_the_custom_fields() {

    global $wpdb;

    $results = $wpdb->get_results(
        $wpdb->prepare(
            "
            SELECT meta_key, meta_value
            FROM   $wpdb->postmeta
            WHERE  meta_key REGEXP '%s'
            ", '^[_]') );

    return $results;
}

Несколько замечаний по приведенному выше запросу:

  • Я использую функцию подготовки перед get_results. Это для параметризации и безопасности. Если для вас это ново, то рекомендую прочитать эту статью.
  • Это возвращает все мета-ключи и мета-значения в массиве,
  • В зависимости от того, сколько записей вы хотите вернуть, это может занять некоторое время (и, возможно, должно выполняться партиями).

Наконец, для тех, кому любопытно, индексы не существуют для столбца meta_value, но есть для столбца meta_key.

Столбцы в таблице Post Meta с индексами.

Поэтому, если вы решите изменить запрос и хотите использовать столбцы с индексами, обратитесь к meta_id, post_id и meta_key.

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

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