Cum să preiau doar termenii care sunt în uz
Folosesc în prezent term_exists( $term, $taxonomy );
într-o condiție, dar problema este că include termeni care nu sunt folosiți (deși există în lista de categorii).
Există ceva pe care îl pot folosi în afară de term_exists
care să includă doar categoriile care sunt în uz? Sau trebuie să filtrez cumva pentru a obține doar termenii activi?
Filtrez o arhivă de proprietăți imobiliare prin intermediul unui element select. O dată pe săptămână, când sunt desemnate casele deschise, aplic categoria 'Open House' acestora, permițând vizitatorilor să sorteze pentru a vedea toate casele deschise. După weekend, șterg categoria de casă deschisă din fiecare listare. Exemplu: https://megangulick.com/agent-listings/ (în prezent editez manual opțiunea, așa că 'Open House' nu apare ca opțiune).
Ceea ce încerc să fac este să modific opțiunea inițială select în funcție de existența sau nu a caselor deschise în prezent.
Iată cum arată codul meu existent:
<?php $categories = get_categories('taxonomy=listing-neighborhood&post_type=listings'); ?>
<select name="listingcat" id="listingcat" onchange="submit()">
<?php //acesta este fragmentul pentru care am nevoie de o soluție
$cat = (term_exists('Open House', $categories));
if $cat {
echo '<option value="">Selectează cartierul sau casa deschisă</option>';
} else {
echo '<option value="">Selectează cartierul</option>';
}
?>
<?php
foreach ($categories as $category) :
echo '<option value="'.$category->name.'"';
if(isset($_GET['listingcat']) && ($_GET['listingcat'] == $category->name)) {
echo ' selected="selected"';
}
echo '>'.$category->name.'</option>';
endforeach;
?>
</select>
Sarcina aici este să determin dacă un anumit termen (de ex. Open House) este în uz, apoi să folosesc informația pentru o instrucțiune condițională if/else.

Am început să cercetez array-urile de termeni și am ajuns la o soluție care funcționează, pentru a crea o condiție bazată pe faptul dacă un termen este folosit sau nu de către vreun articol:
<?php $categories = get_categories('taxonomy=listing-neighborhood&post_type=listings'); ?>
<?php
$term_name = wp_list_pluck( $categories, 'name' );
$this_name= 'Open House';
if( in_array( $this_name, $term_name ) ){
echo '<option value="">Selectează starea sau open house</option>';
} else {
echo '<option value="">Selectează starea (afișează toate implicit)</option>';
}
?>
Apreciez ajutorul tuturor. Cred că întrebarea mea inițială a fost derutantă, nu era întrebarea de care aveam nevoie pentru a găsi soluția.

Pentru a obține doar termenii care sunt utilizați în postări asociate, puteți folosi funcția get_terms()
cu parametrul pad_counts
setat pe true. Acest lucru va asigura că proprietatea count a fiecărui obiect termen reflectă numărul de postări asociate. Apoi puteți filtra termenii care au count 0.
$taxonomy = 'your_taxonomy'; // Înlocuiți 'your_taxonomy' cu numele taxonomiei dvs.
$terms = get_terms(array(
'taxonomy' => $taxonomy,
'pad_counts' => true, // Setat pe true pentru a include numărul de postări asociate
));
// Filtrați termenii pentru a include doar cei cu postări asociate
$used_terms = array_filter($terms, function($term) {
return $term->count > 0;
});
// Verificați dacă s-au obținut termeni
if (!empty($used_terms)) {
foreach ($used_terms as $term) {
// Afișați informațiile despre termen
echo '<p>Nume Termen: ' . $term->name . '</p>';
echo '<p>ID Termen: ' . $term->term_id . '</p>';
echo '<p>Slug Termen: ' . $term->slug . '</p>';
echo '<p>Descriere Termen: ' . $term->description . '</p>';
echo '<p>Număr Postări: ' . $term->count . '</p>';
// Puteți afișa mai multe informații despre termen dacă este necesar
}
} else {
echo 'Nu s-au găsit termeni cu postări asociate.';
}

Va trebui o rescriere mai amplă decât mă așteptam, dar pare promițător. Revin cu rezultate mai târziu în această dimineață. Mulțumesc.
