В этом конкретном коде у меня есть поле <select multiple="multiple">
(с использованием select2.js
) в моем административном бэкэнде в пользовательском типе поста с пользовательскими таксономиями. Все в этой области работает, как ожидалось. У меня проблемы с отображением нескольких выбранных вариантов, так как я не знаю, как правильно настроить массив и / или если код правильный.
Я включил var_dump()
, поскольку это показывает, что оба значения сохранены, но отображается только первое. Я знаю, что это из-за кода (( $breed->slug == $select_breed[0]->slug ) ? 'selected="selected"' : '' )
, но я не знаю, как сделать ту же строку кода, например: $select_breed[ALL/ANY]->slug
, так как иногда они могут выбрать 1, 2, 3, 4 или 5 различных значений. Некоторая помощь с этой строкой кода была бы очень признательна!
_N.B. С помощью @CBroe я включил array_column()
и in_array()
, чтобы сформулировать рабочий код. Любые другие предложения приветствуются. Я включил результаты в качестве ответа.
КОД
<?php
/**
* Pet Breed
*/
$breed_args = get_terms( array (
'taxonomy' => 'breed_taxonomy',
'hide_empty' => false
));
$select_breed = get_the_terms( get_the_ID(), 'breed_taxonomy' );
?>
<div class="section group">
<div class="col full">
<label for="pet_breed"><strong><?php _e( 'Pet Breed', 'audar_pets' ); ?> <abbr class="required" >*</abbr></strong><br />
<select id="pet_breed" class="taxonomy-select" name="pet_breed[]" multiple="multiple" style="width: 100%;" required="required" required >
<option></option>
<?php
if ( !empty( $breed_args ) ) :
foreach( $breed_args as $breed ) :
echo '<option value="' . $breed->slug . '" ' . (( $breed->slug == $select_breed[0]->slug ) ? 'selected="selected"' : '' ) . ' >' . $breed->name . '</option>';
endforeach;
endif;
?>
</select>
</label>
<?php
$pet_breed = get_the_terms( get_the_ID(), 'breed_taxonomy' );
var_dump( $pet_breed );
?>
</div>
</div>
SAVE
wp_set_post_terms( get_the_ID(), $_POST['pet_breed'], 'breed_taxonomy', false );
РЕЗУЛЬТАТЫ VAR_DUMP ($ PET_BREED)
array(2) {
[0]=>
object(WP_Term)#16459 (10) {
["term_id"]=>
int(153)
["name"]=>
string(19) "German Shepherd Dog"
["slug"]=>
string(19) "german-shepherd-dog"
["term_group"]=>
int(0)
["term_taxonomy_id"]=>
int(153)
["taxonomy"]=>
string(14) "breed_taxonomy"
["description"]=>
string(0) ""
["parent"]=>
int(0)
["count"]=>
int(1)
["filter"]=>
string(3) "raw"
}
[1]=>
object(WP_Term)#16464 (10) {
["term_id"]=>
int(154)
["name"]=>
string(27) "German Short-Haired Pointer"
["slug"]=>
string(27) "german-short-haired-pointer"
["term_group"]=>
int(0)
["term_taxonomy_id"]=>
int(154)
["taxonomy"]=>
string(14) "breed_taxonomy"
["description"]=>
string(0) ""
["parent"]=>
int(0)
["count"]=>
int(1)
["filter"]=>
string(3) "raw"
}
}