У меня есть куча постов под названием что-то вроде этого ...
- Английский язык 2015
- Английский язык 2016
- Английский язык 2017
- Английский язык 2018
И на каждом из этих постов у меня есть выпадающее меню выбора, отображающее посты с одинаковым названием, но разным годом.Вот мой код для этого.Кстати, я использую плагин Relavanssi:
<?php global $post;
$the_title = preg_replace('/[0-9]+/', ' ', $post->post_title);
$args = array(
'post_type' => 'product',
's' => $the_title,
'sentence' => true,
'exact' => true,
'orderby' => 'title',
'order' => 'ASC',
'showposts' => -1
);
$query = new WP_query($args);
relevanssi_do_query($query);
if ($query->post_count > 1) { ?>
<h4>Years</h4>
<select onchange="location = this.value;">
<option disabled selected value>Select Year</option>
<?php
foreach ($query->posts as $r_post) {
if ($r_post->ID == $post->ID ) continue;
$link = get_permalink($r_post->ID);
$title = get_the_title($r_post->ID);
echo "<option value='$link'>$title</option>";
}
?>
</select>
<?php } ?>
Как видите, я ищу заголовок текущей записи и удаляю годы.
Все хорошо, ОДНАКО, если у меня есть еще сообщения, называемые чем-то вроде ...
- Английский язык и литература 2015
- Английский язык и литература 2016
- Английский язык и литература 2017
- Английский язык и литература 2018
... эти сообщения также будут отображаться в раскрывающемся меню в сообщениях выше на английском языке, а такжеон подбирает фразу «Английский язык», но я хочу точный поисковый запрос, поэтому он отображает только сообщения «Английский язык» в выпадающем списке этих сообщений.
Я пытался заключить переменную $ the_title в кавычки, пытаясь найти фразу, но это ничего не дало.