web-dev-qa-db-fra.com

Modification du widget de recherche par défaut

Je crée un widget de plug-in qui effectue une recherche différente du widget de recherche par défaut normal. J'ai copié le code du widget par défaut:

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");'));
    ?>

Je ne parviens pas à trouver où ce widget de recherche par défaut appelle la fonction search.php. En gros, je veux créer ma propre fonction search.php (AKA searchNew.php) et l'appeler lorsque l'utilisateur lance la recherche. Des idées où search.php est appelé afin que je puisse le remplacer par un fichier différent?

Edit: j'ai déjà regardé dans le fichier searchform.php (celui appelé par get_search_form) et rien ne semble suggérer qu'il appelle search.php

5
Conrad S

Vous pouvez vous connecter au hook d’action 'get_search_form' (consultez la partie "dernière option" du lien ci-dessous). Définissez la priorité suffisamment élevée pour remplacer tout ce qui est créé dans un thème.

Un plugin pourrait ressembler à (à partir du lien ci-dessous):

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

8
skim-