@TosterUserName

Как ввести список ссылок из произвольного поля Wordprress?

Хочу выводить похожие записи, подбирая их вручную к каждому посту. Нашел подходящий скриптик, который получает из произвольного поля 'my_related_posts' айдишники постов (они там указаны через запятую) и делает на них ссылки.

if ($my_related_post_ids = get_post_meta($post->ID, 'my_related_posts', true)):
        $related_args = array(
            'posts_per_page' => -1, // сколько постов будет указано в админке, столько и выведется
            'post__in' => explode(',', $my_related_post_ids), // в качестве значения нужно будет передать массив
            'orderby' => 'post__in', // посты будут сортироваться в том же порядке, в котором они перечислены в админке
        );
        $my_query = new WP_Query($related_args);
        // если посты, удовлетворяющие нашим условиям, найдены
        if ($my_query->have_posts()):
            // выводим заголовок блока похожих постов
            echo '<h4 class="related">' . get_post_meta($post->ID, 'my_related_posts_title', true) . '</h4><ul class="relatedlist">';
            // запускаем цикл
            while ($my_query->have_posts()): $my_query->the_post();
                echo '<li class="relatedlist-item"><a class="relatedlist-link" href="' . get_permalink($my_query->post->ID) . '"><div class="relatedlist-thumbnail">' . get_the_post_thumbnail(null, 'medium', array('alt' => get_the_title())) . '</div>' .
                $my_query->post->post_title . '</a></li>';
            endwhile;
            echo '</ul>';
        endif;
        wp_reset_postdata();
    endif;


Но он в качестве текста ссылки на похожий пост берет его заголовок ($my_query->post->post_title), а я хочу прописывать собственные. Я бы мог также через запятую прописать их в другое произвольное поле. Как изменить код, чтобы тексты ссылок так же брались из другого поля и подставлялись в цикле?
  • Вопрос задан
  • 59 просмотров
Пригласить эксперта
Ответы на вопрос 1
solidcreature
@solidcreature
Развиваю сообщество WordPress в Москве
Для решения задачи воспользуйтесь плагином Advanced Custom Fields Pro, он позволит добавить к каждой записи любое количество пар ID поста + Новый заголовок с удобным интерфейсом:

Для примера название поля-повторителя relatives, подполей relative_id и relative_title, тогда код будет выглядет так:

<?php if( have_rows('relatives') ): ?>
  <ul>
  <?php while ( have_rows('relatives') ) : the_row(); ?>
  <li><a href="<?php $id = get_sub_field('relative_id'); echo get_the_permalink($id); ?>"><?php the_sub_field('relative_title'); ?></a></li>
 <?php endwhile; ?>
  </ul>
<?php endif; ?>


Подробнее о поле Repeater https://www.advancedcustomfields.com/resources/rep...
Почти то же самое можно сделать и с обычным ACF без PRO
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы