Может ли WordPress WP_Query возвращать мета-сообщение настраиваемого поля? - PullRequest
3 голосов
/ 11 ноября 2011

По какой-то причине я не могу заставить WP_Query возвращать значения настраиваемых полей сообщений. Я могу получить миниатюры сообщений, используя get_the_post_thumbnail($post->ID, array(50,50)), но не могу получить данные пользовательских полей, используя get_post_meta($post->ID, $key, true).

Урезанная версия того, что я пытаюсь сделать:

<?php
    $keys = array('Show Date','Birth Year','Origin');

    echo '<table>';
    echo '<tr><th>Title</th>';
    foreach( $keys as $key ) {
        echo '<th>' . $key . '<th>';
    }
    echo '</tr>';

    $myquery = new WP_Query( 'post_type=post' );
    if( $myquery->have_posts() ) : while( $myquery->have_posts() ) : $myquery->the_post();

        $title = get_the_title();
        echo '<tr><td>' . $title . '</td>';

        $values = array();
        foreach( $keys as $key ) {
            $values[] = get_post_meta($post->ID, $key, true);
        }
        foreach( $values as $value ) {
            echo '<td>';
            echo $value;
            echo '</td>';
        }
        echo '</tr>';

    endwhile; endif;

    echo '</table>';
?>

Также доступно здесь:
http://pastebin.com/at8S2THs

Даже если удалить весь несущественный код, я не могу заставить это работать. Я знаю, что вы можете использовать такие параметры, как meta_key и meta_value в запросе, чтобы сузить результаты, но я просто хочу отобразить все значения для ключей, которые я указываю, если они существуют, для каждого сообщения.

Любая помощь будет принята с благодарностью ...

** РЕШЕНИЕ НАЙДЕНО **

Просто нужно добавить global $post; после начала цикла. Спасибо @Kimikaze на форуме поддержки WP за предоставленное решение!

Ответы [ 2 ]

1 голос
/ 11 ноября 2011

Когда я не могу найти нужные мне данные в WordPress, я всегда нахожу полезным распечатать глобальный $ post-объект на экране, чтобы я мог видеть, попадают ли мои данные на страницу.

<code>Global $post;
echo "<pre>";
 print_r($post);
echo "
";

Все вспомогательные методы или" ловушки "обычно просто взаимодействуют с этим (или другим) глобальным объектом. Проверьте вывод этого на $ post (и, возможно, вашмассив $ values) для данных, которые вы ищете, и если они есть, вы можете просто ссылаться на них напрямую, например, заголовок сообщения

$post->title

Еще одна мысль, третий параметр get_post_meta () делаетон возвращает единственную строку, когда установлено значение true, что вы получаете, когда она установлена ​​в значение false?

0 голосов
/ 11 ноября 2011

Я предполагаю, что проблема связана со значениями, которые вы используете в качестве мета-ключей.Чтобы получить данные с помощью get_post_meta (), вам нужно передать фактические значения meta_key, которые, вероятно, являются «show_date», «birth_year» и «origin», поскольку значение meta_key не обрабатывает заглавные буквы или пробелы.Попробуйте изменить те значения, в которых вы устанавливаете массив $ keys:

$keys = array('show_date','birth_year','origin');

Если это не сработает, возможно, стоит проверить в базе данных (в таблице wp_postmeta), чтобы подтвердить фактический meta_keyзначения.

...