Отображение более одного настраиваемого поля для сообщения

У меня есть два «Пользовательских поля», назначенных сообщению, которое у меня есть. Оба этих «Пользовательских поля» имеют одно и то же имя, но разные «Значения». На данный момент мой код ниже представляет только одну из ссылок. Я пытаюсь заставить его отображать оба. Поэтому каждый раз, когда я добавляю еще одно «Пользовательское поле» с именем «Избранный блог», оно будет продолжать отображать их все.

Пользовательские поля
1) Название: Featured-Blog и Значение: 704 (704 – идентификатор сообщения)
2) Название: Featured-Blog и Значение: 699 (699 – это идентификатор сообщения)

Код, используемый для отображения ссылки на каждое из сообщений. (можно получить только одно из настраиваемых полей для отображения)

Скриншот вывода

введите здесь описание изображения

Используется код

<?php $related = get_post_meta($post->ID, "Featured-Blog", $single=true);

        $related=explode(',',$related);
        $args = array_merge( array('post__in'  => $related, $wp_query->query ) );
        query_posts($args);
        if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

        <div id="<?php the_ID(); ?>">
            <a href="<?php the_permalink();?>"><p class="caption"><?php the_title(); ?></p></a>
        </div>

    <?php endwhile; else: ?>
    <p>no related</p>
    <?php endif; wp_reset_query();?>

Ниже приведен старый код, который я изначально пытался использовать, но так и не стал использовать. Это на самом деле вытягивает оба моих «Пользовательских поля». Вы можете видеть, что он явно закодирован по-другому, потому что вы можете видеть, что он говорит «Заголовок» вместо заголовка сообщения. Но я просто использую этот код в качестве примера, чтобы показать вам, что может отображаться более одного «настраиваемого поля», если только нет простого исправления для приведенного ниже кода? Может быть, какая-то форма кода, которая может быть включена в мой рабочий скрипт выше. И приведенный выше код, и этот нижний очень близки к тому, что я пытаюсь сделать. Кажется, что у одного есть что-то, что нужно другому.

Скриншот вывода

введите здесь описание изображения

<div id="related-posts">
<?php
  $custom_fields = get_post_custom($post_id); //Current post id
  $my_custom_field = $custom_fields['Featured-Blog']; //key name
  foreach ( $my_custom_field as $key => $url )
 echo $key ="<a href='".$url."'>TEST</a><br /><br /><br/>";
?>

person user2898224    schedule 20.10.2013    source источник
comment
Привет, вам не нужно использовать html для форматирования сообщений здесь, проверьте: stackoverflow.com/editing-help   -  person brasofilo    schedule 20.10.2013


Ответы (1)


Вам просто нужно передать false вместо true при использовании get_post_meta():

$related = get_post_meta( $post->ID, "Featured-Blog", false );
var_dump( $related );

С помощью var_dump вы сможете увидеть необработанное содержимое переменная. В любом случае, вы получите массив, так что вы можете просто сделать:

$related = get_post_meta( $post->ID, "Featured-Blog", false );
$args = array_merge( array('post__in'  => $related, $wp_query->query ) );

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

Обратите внимание, что вы не следует использовать query_posts.

person brasofilo    schedule 20.10.2013
comment
хм, я кое-что читал об этом. теперь я не уверен, хочу ли я идти по этому пути. Я понятия не имею, с чего начать, если я буду делать это по-другому. Я пытался в течение нескольких дней с этим ха-ха. горько-сладкий. - person user2898224; 21.10.2013
comment
Я знаю, как создавать метаблоки, настраиваемые поля и прочее, но предпочитаю использовать Расширенные настройки Поля, отличный плагин. - person brasofilo; 21.10.2013