mokalovesoulmate
Quiero preguntar cómo crear un formulario de búsqueda personalizado de woocommerce.
Mi formulario de búsqueda y filtro tiene 3 campos:
Categoría: Me las arreglé para llevar la categoría de productos de woocommerce a mi formulario html de búsqueda personalizada con <select>
etiqueta:
<?php
$catTerms = get_terms('product_cat', array('hide_empty' => 0, 'orderby' => 'ASC', 'exclude' => '17,77'));
foreach($catTerms as $catTerm) : ?>
<option value="<?php echo $catTerm->slug; ?>"><?php echo $catTerm->name; ?></option>
<?php endforeach; ?>
Filtrado por: (menú desplegable) por autor:
Agregué un campo adicional a woocommerce usando woo_add_custom_general_fields_save()
función en el tema functions.php,
trabaja apropiadamente.
Nota: este no es un ‘campo personalizado’ que solemos usar en wordpress para agregar más metadatos, pero este código a continuación es para agregar más campos en Datos del producto> General (en woocommerce).
function woo_add_custom_general_fields_save($post_id)
{
$woocommerce_textinput = $_POST['_book_author'];
if( !empty( $woocommerce_textinput ) )
update_post_meta( $post_id, '_book_author', esc_html( $woocommerce_textinput ) );
}
Por titulo:
Me las arreglé para usar este filtro usando http://www.example.com/wp-root/woocommerce-product-page/?s=searchproducttitle
Campo de texto de entrada:
Esto es para que el usuario busque por palabra clave.
Así que este es mi formulario de búsqueda html personalizado completo:
<form action="<?php echo site_url(); ?>/pm-bookstore/" method="GET">
<select name="">
<?php $catTerms = get_terms('product_cat', array('hide_empty' => 0, 'orderby' => 'ASC', 'exclude' => '17,77')); ?>
<?php foreach($catTerms as $catTerm) : ?>
<option value="<?php echo $catTerm->slug; ?>"><?php echo $catTerm->name; ?></option>
<?php endforeach; ?>
</select>
<select name="">
<option value="">By author</option>
<option value="">By title</option>
</select>
<input type="text" placeholder="Search Book by Title, Author, ISBN..." name="s">
<button class="fa fa-search" type="submit"></button>
</form>
Para el parámetro de búsqueda, espero poder extraerlos todos. Pero solo puedo usar el parámetro ?s (que es solo el título del producto).
Intenté usar otro parámetro, como, product_cat
, tag_ID
pero sin éxito.
Por el momento solo puedo usar
http://www.example.com/wp-root/woocommerce-product-page/?s=searchproducttitle
Mi resultado esperado es:
o
http://www.example.com/wp-root/woocommerce-product-page/?s=searchproducttitle&category=categoryslug
¿Cómo hacer que este parámetro de búsqueda funcione en la búsqueda de woocommerce?
Gracias.
En su página ‘pm-bookstore’ use WP_Query para obtener el resultado.
// WP_Query arguments
$args = array (
'name' => 'your title',
'post_type' => array( 'product' ),
'post_status' => array( 'publish' ),
'tax_query' => array(
'taxonomy' => 'categories',
'field' => 'slug',
'term' => 'your category slug'
),
'meta_query' => array(
array(
'key' => '_book_author',
'value' => 'your author name',
'compare' => '=',
'type' => 'CHAR',
),
),
);
// The Query
$query = new WP_Query( $args );
No lo he probado pero debería funcionar.
¿Alguna vez conseguiste una solución a esto?
– thorne51
28 de enero de 2015 a las 8:08