web-dev-qa-db-ja.com

カスタム分類用語を名前で検索

アルバムというカスタム分類法があります。

分類学用語のタイトルをテキスト検索できるようにする必要があります。明らかにこれはデフォルトではありませんWP検索。どうやってこれに取り組むのが一番だろうか。

「Football Hits」というアルバムがあるとします。

足をタイプして検索し、アルバムのタイトルとパーマリンクだけを表示します。

ありがとうございます。

3
DIM3NSION
// We get a list taxonomies on the search box
function get_tax_by_search($search_text){

$args = array(
    'taxonomy'      => array( 'my_tax' ), // taxonomy name
    '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>";
 }

}

// sample
get_tax_by_search('Foo');
5
TrubinE

だから、あなたは間違いなく分類法のタイトルで記事を検索することができます - カスタムまたはその他。答えはWP_Queryの「 tax_query 」部分にあります。これがあなたのニーズに合わせたコーデックスからの例です。

<ul>
<?php

global $post;
$album_title = $_GET['album-title'];
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 5,
    'tax_query' => array( // NOTE: array of arrays!
        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>

_ update _

私はこれをテストしていませんが、理論的にはうまくいくと思います。 「foot」を含むものに一致させるには:

<ul>
<?php

global $post;
$album_title = $_GET['album-title']; // say the user entered 'foot'
$args = array(
    'post_type' => 'post',
    'posts_per_page' => 5,
    'tax_query' => array( // NOTE: array of arrays!
        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>

それが役立つことを願っています!

1
MacPrawn