web-dev-qa-db-fra.com

Modification du champ de recherche du widget

J'utilise le thème par défaut vingt-six. J'ai quelques informations sur ce site, mais quand quelqu'un utilise le champ de recherche que j'ai dans la barre latérale (widget), je souhaite que celui-ci effectue une recherche sur un site Web WordPress externe, qui contient des informations plus pertinentes.

Ainsi, sur domain1.com, lorsque quelqu'un clique sur le widget et met son terme de recherche, puis clique sur le bouton de recherche ou appuie sur Entrée, j'aimerais le rechercher sur domain2.com.

Scenerio:

  1. Le visiteur clique sur le champ de recherche qui se trouve sur domain1.com
  2. Types dans l'équipement de lynx comme terme de recherche
  3. Presses entrer
  4. Rechercher Directs to: http://domain2.com/?s=bobcat+equipment

Mon fichier searchform.php ressemble à ceci:

<?php
/**
 * Template for displaying search forms in Twenty Sixteen
 *
 * @package WordPress
 * @subpackage Twenty_Sixteen
 * @since Twenty Sixteen 1.0
 */
?>

<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">
    <label>
        <span class="screen-reader-text"><?php echo _x( 'Search for:', 'label', 'twentysixteen' ); ?></span>
        <input type="search" class="search-field" placeholder="<?php echo esc_attr_x( 'Search &hellip;', 'placeholder', 'twentysixteen' ); ?>" value="<?php echo get_search_query(); ?>" name="s" />
    </label>
    <button type="submit" class="search-submit"><span class="screen-reader-text"><?php echo _x( 'Search', 'submit button', 'twentysixteen' ); ?></span></button>
</form>

Toute aide à la modification serait appréciée. Réduisant ceci à cette ligne: <form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">

Aidez-vous à utiliser ici une URL personnalisée au lieu de renvoyer l’URL de la maison.

3
d.ariel

La valeur par défaut Search widget utilise la fonction get_search_form() core pour afficher le formulaire de recherche.

Vous pouvez donc modifier l'action du formulaire de recherche

<form role="search" method="get" class="search-form" action="http://domain2.com">

dans le fichier searchform.php du thème enfant.

Ici, nous supposons que domain2.com supporte également les paramètres de recherche par défaut de WordPress.

Si nous ne voulons pas modifier le fichier, nous pouvons ajuster la sortie de home_url() via des filtres:

add_filter( 'widget_display_callback', function( $instance, $obj, $args )
{
    // Only target Search widgets
    if( 'search' === $obj->id_base )
        add_filter( 'home_url', 'wpse_search_domain', 10, 2 );

    return $instance;
}, 10, 3 );


function wpse_search_domain( $title, $post_id )
{
    // Only run once
    remove_filter( current_filter(), __FUNCTION__ );

    // Replace the home url with domain2.com
    return 'http://domain2.com/';
}

où cible le premier appel home_url() dans chaque Recherche widget.

Notez que la première approche modifiera la sortie de tous les appels get_search_form(), mais que la seconde ne modifiera que la sortie de get_search_form() avec chaque Search widget.

4
birgire