Извлечение объектов из базы данных для заданных c сообщений - PullRequest
3 голосов
/ 12 февраля 2020

У меня есть следующий код:

$test = get_post_meta($post->ID, 'author', true);
var_dump($test);

, который возвращает мне эти два идентификатора:
enter image description here

Это два идентификатора внутри моего wp_posts таблица базы данных, как я могу извлечь как post_title, так и guid? Вот что показано в базе данных:
enter image description here

1 Ответ

3 голосов
/ 12 февраля 2020

Поскольку вы уже используете вспомогательные функции WordPress, возможно, самый простой способ - использовать соответствующие вспомогательные функции get_the_title() и get_the_guid().

Примерно так:

if( $_author = get_post_meta( $post->ID, 'author', true ) ){
    foreach( $_author as $id_string ){
        $guid       = get_the_guid( $id_string );
        $post_title = get_the_title( $id_string );
    }
}

Вы также можете использовать класс $wpdb (в частности, метод $wpdb::get_results()), но это включает в себя написание вашего собственный SQL запрос, , безопасно превращающий его в подготовленный оператор для предотвращения SQL уязвимостей внедрения с помощью $wpdb::prepare() метода , и в целом кажется более сложным, чем необходимо для чего-то, как просто, как получить два поля из таблицы posts.

global $wpdb;
$_author = get_post_meta( $post->ID, 'author', true );
$format  = array_fill( 0, count($_author), '%d' );
$format  = implode(',', $format);

$sql = "
    SELECT post_title, guid
    FROM   {$wpdb->posts}
    WHERE  ID
    IN ({$format})
    GROUP BY ID
";

$results = $wpdb->get_results( $wpdb->prepare( $sql, array($_author) ) );

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

WordPress имеет множество удобных вспомогательных функций, таких как эта, обычно они следуют соглашению об именах get_the_[object]_[part_of_object](), и обычно Если они начинаются с the_ (без get_), отобразит значение вместо простого его возврата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...