Modificarea widget-ului implicit de căutare

11 nov. 2014, 06:08:10
Vizualizări: 25.1K
Voturi: 6

Creez un widget pentru plugin care face o căutare diferită față de widget-ul implicit de căutare. Am copiat codul din widget-ul implicit:

class new_search extends WP_Widget {


             function __construct() {
                    $widget_ops = array('classname' => 'widget_search', 'description' => __( "Un formular de căutare pentru fotografiile NextGen") );
                    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;

                    // Folosește formularul de căutare al temei curente dacă există
                    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('Titlu:'); ?> <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;
            }





    } // sfârșit clasa example_widget
    add_action('widgets_init', create_function('', 'return register_widget("new_search");'));
    ?>

Am probleme în a găsi unde acest widget implicit de căutare apelează funcția search.php. Practic, vreau să creez propria mea funcție search.php (numit searchNew.php) și să o apelez când utilizatorul apasă pe căutare. Aveți idee unde este apelat search.php pentru a-l putea înlocui cu un fișier diferit?

Editare: Am verificat deja în fișierul searchform.php (cel apelat de get_search_form) și nimic de acolo nu sugerează că ar apela search.php

3
Comentarii

Aruncă o privire aici: http://wordpress.stackexchange.com/a/165494/22728

Mayeenul Islam Mayeenul Islam
11 nov. 2014 09:37:06

Mulțumesc! Există vreo modalitate de a modifica fișierul function.php din interiorul plugin-ului meu? Vreau să fac asta portabil pentru alte teme.

Conrad S Conrad S
11 nov. 2014 20:50:01

https://www.google.com/search?q=wordpress+filters

Mayeenul Islam Mayeenul Islam
12 nov. 2014 05:52:06
Toate răspunsurile la întrebare 2
3

Puteți folosi hook-ul de acțiune 'get_search_form' (verificați partea "ultima opțiune" din link-ul de mai jos). Setați prioritatea suficient de mare pentru a suprascrie orice este creat în temă.

Un plugin ar putea arăta astfel (din link-ul de mai jos):

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">' . __( 'Caută:' ) . '</label>
    <input type="text" value="' . get_search_query() . '" name="s" id="s" />
    <input type="submit" id="searchsubmit" value="'. esc_attr__( 'Caută' ) .'" />
    </div>
    </form>';

    return $form;
}

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

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

11 nov. 2014 21:50:47
Comentarii

Link-ul spune că trebuie să creez această funcție în fișierul functions.php. Există vreo modalitate de a o face într-un folder de plugin? Mulțumesc.

Conrad S Conrad S
11 nov. 2014 23:05:05

Desigur - poți scrie funcția de hook într-un plugin.

skim- skim-
11 nov. 2014 23:09:33

Vești proaste!: Nu știu când, dar de când widget-ul de căutare a fost înlocuit cu noul bloc de căutare, get_search_form() sau searchform.php nu mai funcționează. Dacă site-ul tău încă folosește vechiul widget de căutare, acesta este în continuare acolo cu același rezultat ca înainte, dar dacă adaugi unul nou, acesta va fi blocul de căutare. Și nu am reușit să găsesc cum să modific elementul blocului de căutare.

vee vee
14 ian. 2022 10:46:12
0

Cea mai curată metodă posibilă:

  1. Creează un fișier searchform.php în tema ta. Acesta va fi folosit în locul formularului implicit.

  2. Adaugă noul tău cod HTML pentru căutare

<form action="/" method="get">
    <label for="search">Caută în <?php echo home_url( '/' ); ?></label>
    <input type="text" name="s" id="search" value="<?php the_search_query(); ?>" />
    <input type="image" alt="Caută" src="<?php bloginfo( 'template_url' ); ?>/images/search.png" />
</form>
30 oct. 2019 13:53:37