Sto utilizzando this code per cercare prodotti da un sito Web Wordpress/WooCommerce.
Il mio requirment è URL come "http://localhost/wp/?s=D34&post_type=product" Mentre s=D34
è una stringa di ricerca.Errore nella ricerca della colonna post_type del modulo post_type specifico utilizzando la ricerca prodotto WooCommerce
Quando l'utente cerca una stringa. I dati verranno ricercati da Tutti i campi predefiniti + custom filed
del prodotto. Il lavoro codice qui sotto bene con http://localhost/wp/?s=D34 ma quando è concatenato con url allora dire
codice è il seguente
function cf_search_where($where) {
global $pagenow, $wpdb;
if (is_search()) {
$where = preg_replace("/\(\s*".$wpdb->posts.".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
"(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->postmeta.".meta_value LIKE $1)", $where);
$where .= " AND ($wpdb->posts.post_type = 'product') ";
}
return $where;
}
add_filter('posts_where', 'cf_search_where');
Questo per evitare che i valori distinti
function cf_search_distinct($where) {
global $wpdb;
if (is_search()) {
return "DISTINCT"; //to prevent duplicates
}
return $where;
}
add_filter('posts_distinct', 'cf_search_distinct');
Quindi quale modifica è richiesta?
URL
http://localhost/wp/?orderby=price&post_type=product funzionano bene
ma ciò che è sbagliato con http://localhost/wp/?s=D34&post_type=product
Sono solo curioso (dato che mi è successo un po '); prova ad aggiungere un widget carrello o uno qualsiasi dei widget woocommerce (come le categorie) da qualche parte (temporaneamente) sulla pagina in cui si trova il campo di ricerca, quindi prova a cercare con la seconda stringa (con 's = d34'). Ho voluto fare una ricerca dettagliata per woocommerce e ha funzionato solo quando avevo alcuni altri widget woocommerce presenti nella pagina con il campo di ricerca. Potrebbe essere un problema woocommerce ... –
Posso suggerire solo qui, provare a utilizzare l'URL specificato, potrebbe essere il tuo problema relativo alla codifica url dei caratteri D34, http: // localhost/wp /? Post_type = product & s = D34, it può dare un'idea del tuo problema stampando la clausola where come sotto la risposta suggerisce – Abhishek
@dingo_d Penso anche al suo problema di woo-commerce, o potrebbe essere quando post_type = 'product' incluso inizia a cercare in una cartella specifica come puoi vedere nella figura "Home/Shop/", beh, proverò con quello che hai suggerito. –