Mensajes de consulta por categoría y el campo personalizado, a continuación, orderBy otro campo personalizado - ayuda!

wordpress.stackexchange https://wordpress.stackexchange.com/questions/4197

Pregunta

OK I necesidad de mensajes de consulta mediante los siguientes criterios:

category_name = oficina, meta_key = featured_post, meta_value = Sí

y el orden de estos resultados utilizando un segundo campo personalizado que tiene un valor numérico

meta_key = prop_order

Tengo la siguiente consulta que tira de los mensajes correctos, pero no ordenarlas por el segundo campo personalizado.

<?php $recent = new WP_Query("category_name=office&meta_key=featured_post&meta_value=Yes&posts_per_page=3&orderby=date&order=ASC"); while($recent->have_posts()) : $recent->the_post(); ?>

Sin embargo, desde ya estoy usando un campo personalizado en la consulta no puedo usar orderby = meta_value.

He encontrado la siguiente consulta SQL en los foros, pero no puede conseguir que funcione.

    <?php
 global $wpdb;
 global $post;
 $querystr = "
SELECT * FROM $wpdb->posts
LEFT JOIN $wpdb->postmeta AS proporder ON(
$wpdb->posts.ID = proporder.post_id
AND proporder.meta_key = 'prop_order'
)
LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->term_taxonomy.term_id = 3
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->posts.post_status = 'publish'
AND $wpdb->wpostmeta.meta_key = 'featured_post' 
AND $wpdb->wpostmeta.meta_value = 'Yes' 
ORDER BY proporder.meta_value ASC
 ";

 $pageposts = $wpdb->get_results($querystr, OBJECT);

?>

Cualquier ayuda sería muy apreciada!

Gracias

David

¿Fue útil?

Solución 2

Gracias por sus chicos de entrada. No me di cuenta que nunca había publicado de nuevo en esto! Gracias a Ethan y algunos otros foums aquí está el código de trabajo:

<?php
 global $wpdb;
 global $post;
 $querystr = "
SELECT * FROM $wpdb->posts
LEFT JOIN $wpdb->postmeta AS proporder ON(
$wpdb->posts.ID = proporder.post_id
AND proporder.meta_key = 'prop_order'
)
LEFT JOIN $wpdb->postmeta AS propfeatured ON(
$wpdb->posts.ID = propfeatured.post_id
AND propfeatured.meta_key = 'featured_post'
)
LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->term_taxonomy.term_id = 4
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->posts.post_status = 'publish'
AND propfeatured.meta_value='Yes'
ORDER BY proporder.meta_value ASC
 ";

 $pageposts = $wpdb->get_results($querystr, OBJECT);
 //print_r($querystr);
?>
<?php foreach ($pageposts as $post): ?>
<?php setup_postdata($post); ?>

<!-- some post stuff here -->

<?php endforeach; ?>

donde 'prop_order' y 'featured_post' se se devuelven los campos y mensajes personalizados que coinciden featured_post = 'Sí' y luego están clasificadas por 'prop_order' con el fin de ASC.

Espero que esto ayude!

Otros consejos

Me encontré con su consulta en mi estación de trabajo local. Parece que hay un error tipográfico:

Se debe tener $ wpdb-> postmeta.meta_value no wpdb- $> wpostmeta.meta_value (usado dos veces).

Licenciado bajo: CC-BY-SA con atribución
scroll top