web-dev-qa-db-fra.com

Ajouter une balise pertinente aux résultats de recherche

Les tags sont une partie importante de ma plateforme. En utilisant la recherche par défaut, si le terme recherché correspond à un tag, sur la page des résultats, je souhaite qu'il affiche:

<p>Are you looking for our <a href="TAG-URL">TAG-Name</a> page?</p>

La balise doit avoir au moins une publication, donc pas de balises vides. Quelle serait la solution la plus légère pour y parvenir? Notre fonction de recherche est utilisée très fréquemment.

1
Christine Cooper

Dans functions.php:

function wpse82525_link_search_to_tag()
{
    // check if search archive is being displayed
    if( ! is_search() )
        return;

    // get search query var
    $sqv = get_query_var( 's' );

    // get tag base
    $tagbase = get_option( 'permalink_structure' ) 
        ? get_option( 'tag_base' ) 
            ? trailingslashit( get_option( 'tag_base' ) )
            : 'tag/' 
        : '?tag=';

    // return link if matching tag is found
    return ( get_term_by( 'slug', $sqv, 'post_tag' ) )
        ? '<p>' . sprintf( 
            __( 'Are you looking for our <a href="%1$s">%2$s</a> page?', 'txtdomain' ),
            home_url( $tagbase . sanitize_title_with_dashes( $sqv ) ),
            $sqv
        ) . '</p>'
        : '';
}

Dans search.php:

<?php echo wpse82525_link_search_to_tag(); ?>
4
diggy