Modifying widget search box

时间:2016-11-13 作者:d.ariel

我使用的是2616主题的默认设置。我在这个网站上有一些信息,但当有人使用我在侧边栏(小部件)中的搜索框时,我希望它搜索我的外部WordPress网站,该网站有更多相关信息。

域1也是如此。com当有人单击小部件并输入搜索词,然后单击搜索按钮或按enter键时,我希望它在domain2上搜索。com公司

场景:

访问者单击domain1上的搜索框。com在山猫设备中键入搜索项,然后按enter键搜索:http://domain2.com/?s=bobcat+equipment我的搜索表单。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。

1 个回复
最合适的回答,由SO网友:birgire 整理而成

默认的搜索小部件使用get_search_form() 显示搜索表单的核心功能。

因此,您可以编辑搜索表单的操作

<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/\';
}
第一个目标在哪里home_url() 调用每个搜索小部件。

请注意,第一种方法将修改所有get_search_form() 调用,但第二种方法只会修改get_search_form() wihtin each搜索小部件。