Ricerca del termine di tassonomia personalizzata per nome
Ho una tassonomia personalizzata chiamata albums.
Ho bisogno di poter cercare nel testo il titolo del termine della tassonomia, ovviamente questa non è la ricerca predefinita di WP. Mi chiedevo quale fosse il modo migliore per affrontare questo?
Supponiamo che ci sia un album chiamato 'Football Hits',
Inizio a digitare "foot" e lo cerco, tutto ciò di cui ho bisogno è che appaia il titolo dell'album e il permalink.
Grazie!

// Otteniamo un elenco di tassonomie nella casella di ricerca
function get_tax_by_search($search_text){
$args = array(
'taxonomy' => array( 'my_tax' ), // nome della tassonomia
'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>";
}
}
// esempio
get_tax_by_search('Foo');

Quindi puoi sicuramente cercare post per titolo della tassonomia - personalizzata o meno. La risposta si trova nella parte "tax_query" di WP_Query. Ecco un esempio dal Codex, adattato alle tue esigenze:
<ul>
<?php
global $post;
$album_title = $_GET['album-title'];
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
'tax_query' => array( // NOTA: array di array!
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>
AGGIORNAMENTO
Non ho testato questo codice, ma in teoria penso che potrebbe funzionare. Per trovare tutto ciò che contiene "foot":
<ul>
<?php
global $post;
$album_title = $_GET['album-title']; // supponiamo che l'utente abbia inserito 'foot'
$args = array(
'post_type' => 'post',
'posts_per_page' => 5,
'tax_query' => array( // NOTA: array di array!
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>
Spero sia utile!

Grazie! Tuttavia, ho bisogno che sia più una ricerca basata sull'utente. Quindi l'utente dovrebbe digitare la parola "foot" e dovrebbe visualizzare l'album rilevante "Football Hits"

Certo - basta cambiare il titolo hard-coded con una variabile... Come ottieni quel valore di ricerca dall'utente dipende da te però... Ho aggiornato la mia risposta con una variante, come esempio...

Grazie MacPrawn, apprezzo il tuo aiuto. Tuttavia, sicuramente quanto sopra non caricherà i termini "Football Hits" se il valore di ricerca è 'foot'. Forse sto dicendo una sciocchezza

Scusa - ho saltato la parte in cui volevi corrispondenze parziali... Ho aggiornato la mia risposta.

Ho testato quanto sopra, ma sto cercando di far estrarre solo il Titolo dell'Album rilevante, non i post all'interno di quell'album che vedi. Quindi non post categorizzati in Football Hits, ma letteralmente solo il permalink dell'album.

Ah - capisco. Allora sospetto che la risposta di @TrubinE farà un lavoro migliore, in quel caso.
