it-swarm.com.de

Ändern des Standardsuchwidgets

Ich erstelle ein Plugin-Widget, das eine andere Suche ausführt als das normale Standardsuchwidget. Ich habe den Code aus dem Standard-Widget kopiert:

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

Ich habe Probleme zu finden, wo dieses Standardsuchwidget die Funktion search.php aufruft. Grundsätzlich möchte ich meine eigene search.php-Funktion (AKA searchNew.php) erstellen und sie aufrufen, wenn der Benutzer auf search klickt. Gibt es Ideen, bei denen search.php aufgerufen wird, damit ich es durch eine andere Datei ersetzen kann?

Edit: Ich habe bereits in der searchform.php-Datei nachgesehen (die von get_search_form aufgerufene) und nichts scheint darauf hinzudeuten, dass sie search.php aufruft

5
Conrad S

Sie können sich in den Aktions-Hook 'get_search_form' einhängen (überprüfen Sie den Teil "Letzte Option" des nachstehenden Links). Stellen Sie die Priorität so hoch ein, dass alles, was in einem Thema erstellt wurde, außer Kraft gesetzt wird.

Ein Plugin könnte wie folgt aussehen:

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-