Я создал форму, которая получает значения и выполняет поиск в настраиваемых полях и показывает сообщения, которые имеют значения этих настраиваемых полей, код HTML:
<form method="get" action="http://mywebsite.com/search">
<input type="text" name="Color" placeholder="Color">
<select name="Size">
<option>All</option>
<option>Small</option>
<option>Medium</option>
<option>Large</option>
<option>Extra Large</option>
</select>
<input type="submit" value="submit"></button>
</form>
И PHP код на странице результатов (спасибо одному из программистов на этом сайте):
Поиск настраиваемого поля в Wordpress
if ((isset($_GET['color']) && !empty($_GET['color'])) && (isset($_GET['size']) &&
!empty($_GET['size']))) {
// filter the result and remove any spaces
$color = trim(filter_input(INPUT_GET, 'color', FILTER_SANITIZE_STRING));
$size = trim(filter_input(INPUT_GET, 'size', FILTER_SANITIZE_STRING));
// Create the arguments for the get_posts function
$args = [
'posts_per_page' => -1, // or how many you need
'post_type' => 'YOUR_POST_TYPE', // if the post type is 'post' you don't need this line
'post_status' => 'publish', // get only the published posts
'meta_query' => [ // now we are using multiple meta querys, you can use as many as you want
'relation' => 'AND', // Optional, defaults to "AND" (taken from the wordpress codex)
[
'key' => 'color',
'value' => $color,
'compare' => '='
],
[
'key' => 'size',
'value' => $size,
'compare' => '='
]
]
];
$posts = get_posts($args);
$query = new WP_Query($args);
}
if (!empty($posts)) {
while ($query->have_posts()) {
$query->the_post();
//the post codes
}
}
Но есть проблема, все работает хорошо, если заполнены оба поля «input» и «select», а URL будет выглядеть следующим образом:
mywebsite.com / search /? Color = red & Size = Small
Но если один из они не были заполнены, например:
mywebsite.com / search /? Color = red & Size =
Тогда посты не будут отображаться на странице результатов, даже если для этого установлен «цвет» сообщение будет "красным", мне нужен этот URL, показывает сообщение с "color" = "red" и "Size" = "any value".
что мне делать?
PS : Извините, если в моем вопросе есть грамматическая ошибка, я немного знаю Engli sh.