Căutare termen taxonomie personalizată după nume
Am o taxonomie personalizată numită albums.
Am nevoie să pot căuta în text titlul termenului taxonomiei, evident aceasta nu este căutarea implicită WP. Mă întreb care ar fi cea mai bună abordare?
Să zicem că există un album numit 'Hituri Fotbal',
Încep să tastez "fot" și caut asta, tot ce trebuie să apară este titlul albumului și permalink-ul.
Mulțumesc!

// Obținem o listă de taxonomii în căsuța de căutare
function get_tax_by_search($search_text){
$args = array(
'taxonomy' => array( 'my_tax' ), // numele taxonomiei
'orderby' => 'id',
'order' => 'ASC',
'hide_empty' => true,
'fields' => 'all',
'name__like' => $search_text
);
$terms = get_terms( $args );
$count = count($terms);
if($count > 0){
echo "<ul>";
foreach ($terms as $term) {
echo "<li><a href='".get_term_link( $term )."'>".$term->name."</a></li>";
}
echo "</ul>";
}
}
// exemplu
get_tax_by_search('Foo');

Deci poți cu siguranță să cauți postări după titlul taxonomiei - personalizat sau nu. Răspunsul se va afla în partea "tax_query" din WP_Query. Iată un exemplu din Codex, adaptat la nevoile tale:
<ul>
<?php
global $post;
$album_title = $_GET['album-title'];
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
'tax_query' => array( // NOTĂ: array de array-uri!
array(
'taxonomy' => 'albums',
'field' => 'name',
'terms' => $album_title
)
)
);
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach;
wp_reset_postdata();?>
</ul>
ACTUALIZARE
Nu am testat acest lucru, dar teoretic, cred că ar putea funcționa. Pentru a potrivi orice care conține "foot":
<ul>
<?php
global $post;
$album_title = $_GET['album-title']; // să zicem că utilizatorul a introdus 'foot'
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
'tax_query' => array( // NOTĂ: array de array-uri!
array(
'taxonomy' => 'albums',
'field' => 'name',
'terms' => $album_title,
'operator' => 'LIKE'
)
)
);
$myposts = get_posts( $args );
foreach ( $myposts as $post ) : setup_postdata( $post ); ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</li>
<?php endforeach;
wp_reset_postdata();?>
</ul>
Sper că acest lucru te ajută!

Mulțumesc! Dar am nevoie de o căutare bazată pe utilizator. Astfel, când utilizatorul introduce cuvântul "foot", ar trebui să afișeze albumul relevant Football Hits.

Sigur - doar înlocuiește titlul hard-codat cu o variabilă... Cum obții acea valoare de căutare de la utilizator depinde de tine... Am actualizat răspunsul meu cu o variantă, ca exemplu...

Mulțumesc MacPrawn, apreciez ajutorul. Dar sigur că exemplul de mai sus nu va încărca termenii Football Hits dacă valoarea căutată este 'foot'. Poate greșesc eu.

Scuze - am ratat partea în care doreai potriviri parțiale... Am actualizat răspunsul meu.

Am testat varianta de mai sus, dar eu caut să afișez doar Titlul Albumului relevant, nu postările din acel album. Deci nu postări categorizate în Football Hits, ci doar link-ul permanent al albumului.

Ah - am înțeles. Atunci cred că răspunsul lui @TrubinE va fi mai potrivit în acest caz.
