Ricerca del termine di tassonomia personalizzata per nome

16 feb 2017, 22:38:19
Visualizzazioni: 33.1K
Voti: 5

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!

0
Tutte le risposte alla domanda 2
0
13
// 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');
16 feb 2017 23:23:50
7

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!

16 feb 2017 22:57:00
Commenti

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"

DIM3NSION DIM3NSION
16 feb 2017 23:23:17

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...

nibnut nibnut
16 feb 2017 23:25:23

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

DIM3NSION DIM3NSION
17 feb 2017 00:04:13

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

nibnut nibnut
17 feb 2017 00:51:25

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.

DIM3NSION DIM3NSION
17 feb 2017 00:57:26

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

nibnut nibnut
17 feb 2017 12:36:17

Grazie per il tuo aiuto comunque MacPrawn

DIM3NSION DIM3NSION
17 feb 2017 21:02:24
Mostra i restanti 2 commenti