Выхватить ID поста и подставить динамично в PHP код
Имеются два SELECT поля:
В первом селекте я вывожу заголовки всех записей и получаю их ID, мне этот ID нужно выхватить и подставить динамично в PHP код второго селекта сюда 'post__in' => array( код ID ) -- вместо константы '40'
Сайт с полями для наглядности http://product-system.lianopic.co.il/index.php/user-page/
Код первого:
<?php
$query_args = [
'post_status' => 'publish',
'post_type' => 'movie',
];
$query = new WP_Query( $query_args ); ?>
<label for="search">Search by Post title</label>
<select id="country_list" class="postlist-chosen required">
<?php if ( $query->have_posts() ) {
while ( $query->have_posts() ) { $query->the_post(); ?>
<option value="" selected disabled></option>
<option name="search" id="search" value="<?php the_title(); ?>"><?php the_title();?> - ID: <?php the_ID() ?></option>
<?php }} ?>
</select>
Код второго:
<?php
$query_args = [
'post_status' => 'publish',
'post_type' => 'movie',
'post__in' => array( 40 ),
];$query = new WP_Query( $query_args ); ?>
<?php if ( $query->have_posts() ) {
while ( $query->have_posts() ) { $query->the_post();
if( have_rows('repeater_machines') ):
while ( have_rows('repeater_machines') ) : the_row();
$country = get_sub_field('country');
?>
<option value="" selected disabled></option>
<option value="<?=$country?>"><?=$country?></option>
<?
endwhile; endif; wp_reset_query(); ?>
<?php }} ?>
</select>
Ответы (1 шт):
Автор решения: Talleyran
→ Ссылка
Если абстрагироваться от вашей конкретики, то упрощенно с jquery можно так:
<?php
$query_args = [...];
$list1 = new WP_Query( $query_args );
?>
<select id="list1">
<option val=""></option>
<?php foreach ($list1 as $item): ?>
<option value="<?=$item->id?>"><?=$item->title?></option>
<?php endforeach?>
</select>
<select id="list2">
<option val=""></option>
</select>
<script>
$("#list1").on("change", function(){
$("#list2").load("/list2.php?id=" + $(this).val()); //ссылка на вторую страницу с get параметром
});
</script>
И отдельная страница у вас должна быть (в примере list2.php), которая отдает вот это:
<?php
$query_args = [
...
id => $_GET["id"]
];
$list2 = new WP_Query( $query_args );
?>
<option val=""></option>
<?php foreach ($list2 as $item): ?>
<option value="<?=$item->id?>"><?=$item->title?></option>
<?php endforeach?>
Разумеется надо проверять $_GET перед запросом к БД и размещать вторую страницу в соответствии с тем, как у вас настроены url в wordpress или ином движке.