修改默认搜索微件

时间:2014-11-11 作者:Conrad S

我正在创建一个插件小部件,它执行与普通默认搜索小部件不同的搜索。我从默认小部件复制了代码:

class new_search extends WP_Widget {


             function __construct() {
                    $widget_ops = array(\'classname\' => \'widget_search\', \'description\' => __( "A search form for NextGen photos") );
                    parent::__construct(\'search\', __(\'NGGSearch\'), $widget_ops);
            }

            function widget( $args, $instance ) {
                    extract($args);
                    $title = apply_filters( \'widget_title\', empty( $instance[\'title\'] ) ? \'\' : $instance[\'title\'], $instance, $this->id_base );

                    echo $before_widget;
                    if ( $title )
                            echo $before_title . $title . $after_title;

                    // Use current theme search form if it exists
                    get_search_form();

                    echo $after_widget;
            }

            function form( $instance ) {
                    $instance = wp_parse_args( (array) $instance, array( \'title\' => \'\') );
                    $title = $instance[\'title\'];
    ?>
                    <p><label for="<?php echo $this->get_field_id(\'title\'); ?>"><?php _e(\'Title:\'); ?> <input class="widefat" id="<?php echo $this->get_field_id(\'title\'); ?>" name="<?php echo $this->get_field_name(\'title\'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></label></p>
    <?php
            }

            function update( $new_instance, $old_instance ) {
                    return;
            $instance = $old_instance;
                    $new_instance = wp_parse_args((array) $new_instance, array( \'title\' => \'\'));
                    $instance[\'title\'] = strip_tags($new_instance[\'title\']);
                    return $instance;
            }





    } // end class example_widget
    add_action(\'widgets_init\', create_function(\'\', \'return register_widget("new_search");\'));
    ?>
我很难找到这个默认搜索小部件调用搜索的位置。php函数。基本上我想创建自己的搜索。php函数(又名searchNew.php)并在用户点击搜索时调用它。任何想法在哪里搜索。php被调用,所以我可以用不同的文件替换它?

编辑:我已经在searchform中查找了。php文件已经存在(由get\\u search\\u form调用的文件),并且似乎没有任何东西表明它调用了搜索。php

2 个回复
SO网友:skim-

您可以连接到“get\\u search\\u form”操作挂钩(查看下面链接的“最后一个选项”部分)。将优先级设置得足够高,以覆盖在主题中创建的任何内容。

插件可能看起来像(从下面的链接):

function my_search_form( $form ) {
    $form = \'<form role="search" method="get" id="searchform" class="searchform" action="\' . home_url( \'/\' ) . \'" >
    <div><label class="screen-reader-text" for="s">\' . __( \'Search for:\' ) . \'</label>
    <input type="text" value="\' . get_search_query() . \'" name="s" id="s" />
    <input type="submit" id="searchsubmit" value="\'. esc_attr__( \'Search\' ) .\'" />
    </div>
    </form>\';

    return $form;
}

add_filter( \'get_search_form\', \'my_search_form\', 100 );

http://codex.wordpress.org/Function_Reference/get_search_form#Theme_Form

SO网友:user2190488

最干净的方式:

创建searchform.php 在您的主题中。将使用此选项。

添加新的搜索html

<form action="/" method="get">
    <label for="search">Search in <?php echo home_url( \'/\' ); ?></label>
    <input type="text" name="s" id="search" value="<?php the_search_query(); ?>" />
    <input type="image" alt="Search" src="<?php bloginfo( \'template_url\' ); ?>/images/search.png" />
</form>

结束