Consulta de búsqueda en WordPress
Contents
Tengo un problema con la primera línea. Funciona bien en la página 404 y en la página de búsqueda si se busca algo que no existe, pero cuando se busca algo que sí existe, aparece el submenú en la barra lateral. ¿Qué ocurre con este código?
La diferencia entre este código y el tuyo es que he añadido una comprobación adicional para ver si la consulta de búsqueda tiene algún resultado. Los corchetes alrededor de is_search() && 0 === $wp_query->found_posts) hacen que el || opere contra toda la cláusula, igual que los corchetes en matemáticas, en realidad.
Consulta de búsqueda personalizada en WordPress
PHP Notice: is_archive was called <strong>incorrectly</strong>. Conditional query tags do not work before the query is run. Before then, they always return false. Please see <a href=»https://wordpress.org/support/article/debugging-in-wordpress/»>Debugging in WordPress</a> for more information. (This message was added in version 3.1.0.) in …/wp-includes/functions.php on line 5313
PHP Notice: is_home was called <strong>incorrectly</strong>. Conditional query tags do not work before the query is run. Before then, they always return false. Please see <a href=»https://wordpress.org/support/article/debugging-in-wordpress/»>Debugging in WordPress</a> for more information. (This message was added in version 3.1.0.) in …/wp-includes/functions.php on line 5313
PHP Notice: is_search was called <strong>incorrectly</strong>. Conditional query tags do not work before the query is run. Before then, they always return false. Please see <a href=»https://wordpress.org/support/article/debugging-in-wordpress/»>Debugging in WordPress</a> for more information. (This message was added in version 3.1.0.) in …/wp-includes/functions.php on line 5313
Consulta is_search
Quiero añadir algunas condiciones personalizadas y hacer algunas otras cosas en una página de resultados de búsqueda de WordPress. Así que estoy comprobando el valor de is_search() para asegurarme de que sólo estoy aplicando la condición en el momento adecuado. Así que en el functions.php de mi tema hijo pongo:
¡Pero esto siempre devuelve false, incluso con una url como http://mysite/?s=something y la plantilla search.php de mi tema se está utilizando! ¿Esto no es válido para llamar desde functions.php, o estoy entendiendo mal el propósito de esta función?
Por otra parte, viendo una jerarquía de plantillas como la presentada en https://wphierarchy.com, ¿cómo sabe WP que es una página de resultados de búsqueda? ¿Cómo sabe que debe seguir el camino de los «resultados de búsqueda»? He pasado algún tiempo examinando el código fuente, pero no he sido capaz de encontrar el lugar correcto todavía.
He probado a llamar a is_search() desde search.php, ¡y funciona! Después de leer el código fuente, descubrí que no se puede llamar a is_search() desde functions.php porque functions.php se llama demasiado pronto en el proceso. Aparentemente functions.php se considera parte de la «biblioteca de WordPress» y se carga en la línea 13 de wp-blog-header.php, mientras que la plantilla se llama en la línea 19.
Búsqueda php wordpress
Limitar el número de resultados de la búsqueda en wordpressLimitar el número de resultados de la búsqueda en WordPress puede lograrse simplemente cambiando la variable de consulta WP_Query ‘posts_per_page’ , usando el método set de la consulta actual podemos establecerlo a un número específico para mostrar resultados paginados o a -1 para mostrar todos los resultados de la búsqueda sin paginación.function jcas_setup($query)
}Limitar los resultados de la búsqueda de wordpress a tipos de post específicosPor defecto la consulta principal de la búsqueda de wordpress recupera cualquier tipo de post excepto las revisiones y los tipos que se definen como excluidos de la búsqueda. Si quiere refinar su búsqueda restringiendo los tipos de entradas que se consultan, puede hacerlo estableciendo la variable de consulta ‘post_type’ de WP_Query a una cadena que contenga el nombre de un tipo de entrada específico, o un array de tipos de entrada permitidos.function jcas_setup($query)
}Buscar campos personalizados de WordPress por nombrePara buscar una lista específica de nombres de campos personalizados podemos cambiar la consulta SQL como se muestra en el siguiente ejemplo, comprobando si la meta_key coincide con el nombre del campo personalizado requerido, prefijando la meta_key con nuestra tabla postmeta previamente unida.function jcas_post_where($where)