web-dev-qa-db-ja.com

ウィジェット検索ボックスを変更する

デフォルトのTwentysixteenテーマを使用しています。このサイトには情報がありますが、サイドバー(ウィジェット)にある検索ボックスを誰かが使用している場合は、より関連性の高い外部のWordPress Webサイトを検索したいと思います。

だから誰かがウィジェットをクリックして検索語を入力してから検索ボタンをクリックするか、Enterキーを押すとdomain1.comで私はそれをdomain2.comで検索したいのですが

Scenerio:

  1. 訪問者はdomain1.comにある検索ボックスをクリックします
  2. 検索語としてのボブキャット機器の種類
  3. プレスが入る
  4. 検索方向:http://domain2.com/?s=bobcat+equipment

私のsearchform.phpファイルは次のようになります。

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

修正の助けがあれば幸いです。この行にこれを絞り込む:<form role="search" method="get" class="search-form" action="<?php echo esc_url( home_url( '/' ) ); ?>">

ホームURLをエコーする代わりに、ここでカスタムURLを使用するのに役立ちます。

3
d.ariel

デフォルトの Search ウィジェットは、検索フォームを表示するために get_search_form() core関数を使用します。

そのため、検索フォームの action を編集できます。

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

子テーマのsearchform.phpファイルにあります。

ここではdomain2.comがデフォルトのWordPress検索パラメータもサポートしていると仮定します。

ファイルを変更したくない場合は、フィルタを介してhome_url()の出力を調整できます。

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/';
}

それぞれの Search ウィジェットの最初のhome_url()呼び出しをターゲットにします。

最初の方法ではすべてのget_search_form()呼び出しの出力が変更されますが、2番目の方法では各 Search ウィジェット内のget_search_form()の出力のみが変更されます。

4
birgire