WordPress — Включение расширенного настраиваемого поля (ACF) в поиск по сообщениям в блоге и отображение полей в результатах поиска

У меня каверзный вопрос, который надо задать наперед. Надеюсь, это не станет нишей, которая не сможет помочь всем.

Я создал пользовательский поиск, который будет отображать результаты только из указанной категории. Если вы хотите сделать то же самое, выполните шаги 1 & 2.

  1. Создать форму для поиска:

Сохраните его как advanced.php в корне вашей темы / дочерней темы. У вас уже будет файл search.php в этом каталоге.

/ blog / — это путь к вашим сообщениям в блоге — если вы не получили результатов, отметьте это.

Значение cat_slug становится вашей категорией, в которой оно будет искать.

<form method="get" id="advanced-searchform" role="search" action="<?php echo esc_url( home_url( '/blog/' ) ); ?>">
<input type="hidden" name="search" value="post">
<input id="search-case-study" class="search-case-study" type="text" value="" placeholder="Search..." name="s" />
<input name="cat_slug" value="case-study" />
<input type="submit" id="searchsubmit" value="Search" />
</form>
  1. Добавьте к functions.php:

    function advanced_search_query( $query ) {
    
    // check if search AND if "cat_slug" input was present
    if( $query->is_search() && ! empty( $_GET['cat_slug'] ) ) {
    
    // find the category by the slug passed in the input
    $term = get_category_by_slug( $_GET['cat_slug'] );
    // defensive check, in case the category could not be found
    if ( ! empty( $term->term_id ) ) {
    
    // get the category ID
    $cat_id = $term->term_id;
    // set the query argument to search within the category
    $query->set( 'cat', $cat_id );
    
    }
    
    }
    
    }
    

    add_action (‘pre_get_posts’, ‘advanced_search_query’);

Теперь результаты поиска сужены. Мне нужно настроить, какие элементы поста я вижу.

На данный момент я создал свои блоги, относящиеся к этому поиску, с помощью пользовательского шаблона, использующего ACF, как вы можете видеть в моей форме, в категории есть фрагмент «case-study». Нам не нужны все поля, которые я использовал. Поля, относящиеся к поиску:
повторитель — case_study_page_content
sub_fields — заголовок
sub_fields — автор
sub_fields — содержание

Я начал редактировать мой файл content.php, содержащийся в каталоге template-parts, чтобы отобразить результаты, это выглядит так:

<article <?php post_class(); ?> class="blog-post">

<a href="<?php the_permalink(); ?>" class="box-link"></a>

<?php $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'thumbnail' ); ?>
<img src="<?php echo $url ?>" />

<h2>
<?php the_title(); ?>
</h2>

<h3>
<?php the_field('author'); ?>
</h3>

<!--
<div>
<?php the_excerpt(); ?>
</div>
-->

</article>

Именно здесь я столкнулся со своим осложнением, так как не могу просто вызвать the_field (‘author’); в цикле результатов.

Кто-нибудь еще мог успешно извлечь значения из ACF, используемые в пользовательском шаблоне страницы блога, на страницу результатов поиска?

Большое спасибо заранее, это немного превышает мой мозг, и любая помощь будет высоко оценена. Джейсон.

0

Решение

Благодаря указаниям @Stender и @siddhesh — я избавился от своего безумия.

У меня сложилось впечатление, что я должен был разрешить ACF для поиска, когда на самом деле вы уже можете позвонить им. Мой файл content.php теперь выглядит так:

<article <?php post_class(); ?> class="blog-post">

<a href="<?php the_permalink(); ?>" class="box-link"></a>

<?php $url = wp_get_attachment_url( get_post_thumbnail_id($post->ID), 'thumbnail' ); ?>
<img src="<?php echo $url ?>" />

<h2>
<?php the_title(); ?>
</h2>

<?php
$case_study = get_field('case_study_page_content');
?>

<?php if( $case_study ): ?>
<?php while( have_rows('case_study_page_content') ): the_row();
$case_study_author = get_sub_field('author');
?>
<h3>
<?php echo $case_study_author; ?>
</h3>
<?php endwhile; ?>
<?php endif; ?>

</article>
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector