Suport » WP avançat » Cercador intern: Emmagatzemar paraules

  • Solucionat david.redes.it

    (@davidredesit)


    Bona tarda!!

    M’han encarregat capturar les cerques que es facin al motor intern del WordPress, algo similar a search-meter però fet a mida.

    He creat el meu primer plugin i crec que funciona molt bé, instal·lar, desinstal·lar, crear la taula, i guardar en ella les cerques, tal cual hem van manar.

    Per a la funció principal del plugin estic fent servir:


    function enregistrar_cerca(){
    if (get_search_query()){
    global $wpdb;
    $table_name = $wpdb->prefix . "busquedas";
    $wpdb->query("INSERT INTO ".$table_name." (busqueda,fecha,resultado,borrado) VALUES ('".get_search_query()."','".gmdate('Y-m-d')."',0,0)");
    }
    }
    add_action( 'get_search_form', 'enregistrar_cerca' );

    Això funciona correctament amb les cerques que no es troba cap resultat. Però el problema quan es fa una búsqueda que retorna algún post o qualsevol resultat, no salta el ‘get_search_form’ ja que no es carrega de nou el form. Estic intentant documentar-me el més ràpid possible però hem manca temps o probablement algun coneixement.

    Hauria de replantejar-me la forma en la que estic fent la captura de les paraules? Com hem recomaneu fer-ho?

    Gràcies!!

S'està mostrant 1 resposta (d'un total de 1)
  • Iniciador del debat david.redes.it

    (@davidredesit)

    Solventat!!

    Resumint… ho enllaço tot al get_header, i en el cas que hi hagi un paràmetre de búsqueda a la url rere la cadena ‘s’ entenc que tinc de guardar-la ja que és una search, però primer comprobo si hi ha resultats o no d’aquesta cerca, amb el $wp_query->found_posts D’aquesta manera guardo si la paraula ha tingut resultats o si el navegant no ha trobat el que buscaba.


    function registrar_busqueda(){
    global $wpdb;
    global $wp_query;
    $search_string = $wp_query->query_vars['s'];
    $table_name = $wpdb->prefix . "busquedas";

    if ($search_string!=""){
    if ($wp_query->found_posts>0){
    $wpdb->query("INSERT INTO ".$table_name." (busqueda,fecha,resultado,borrado) VALUES ('".$search_string."','".gmdate('Y-m-d')."',1,0)");
    } else {
    $wpdb->query("INSERT INTO ".$table_name." (busqueda,fecha,resultado,borrado) VALUES ('".$search_string."','".gmdate('Y-m-d')."',0,0)");
    }
    }
    }
    add_action( 'get_header', 'registrar_busqueda' );

    Salut

S'està mostrant 1 resposta (d'un total de 1)
  • El tema «Cercador intern: Emmagatzemar paraules» està tancat a noves respostes.