Benutzerdefinierte Abfrage mit mehreren Meta-Schlüsselwerten

Ich bin neu mit WordPress Entwicklung und ich habe diese Abfrage gefunden und ich möchte mehrere Schlüssel und Wert in dieser Abfrage übergeben.

Meine Anfrage lautet:

$querydetails = " SELECT wposts.* FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = 'type' AND wpostmeta.meta_value = 'Collection1' AND wposts.post_status = 'publish' AND wposts.post_type = 'book' ORDER BY wposts.post_date DESC "; 

Ich möchte mehr statement mit OR Operator hinzufügen.

Mein ursprünglicher Code ist:

 posts wposts, $wpdb->postmeta wpostmeta WHERE wposts.ID = wpostmeta.post_id AND wpostmeta.meta_key = 'type' AND wpostmeta.meta_value = 'Collection1' AND wposts.post_status = 'publish' AND wposts.post_type = 'book' ORDER BY wposts.post_date DESC "; $pageposts = $wpdb->get_results($querydetails, OBJECT); ?>  

<a href="https://wordpress.stackexchange.com/questions/136790/custom-query-with-multiple-meta-key-value/">

Ich habe auch mit diesem Code versucht, aber wenn ich 4 Datensätze passiere passiert nichts, nur Seite wird geladen und geladen.

  'book', 'post_status' => 'publish', //Order & Orderby Parameters 'order' => 'DESC', 'orderby' => 'date', //Pagination Parameters 'posts_per_page' => -1, // Here you can add you second meta value 'meta_query' => array( 'relation' => 'OR', array( 'key' => 'type', 'value' => 'Sample 1', 'compare' => 'LIKE' ), array( 'key' => 'type', 'value' => 'Sample 2', 'compare' => 'LIKE' ), array( 'key' => 'type', 'value' => 'Sample 3', 'compare' => 'LIKE' ), array( 'key' => 'type', 'value' => 'Sample 4', 'compare' => 'LIKE' ) ) ); $query = new WP_Query( $args ); ?> have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?> 

<a href="https://wordpress.stackexchange.com/questions/136790/custom-query-with-multiple-meta-key-value/">

Irgendeine Idee ??

Ich werde es schätzen, wenn Sie mich führen 🙂

Solutions Collecting From Web of "Benutzerdefinierte Abfrage mit mehreren Meta-Schlüsselwerten"

Versuche dies:

 < ?php $querydetails = " SELECT wposts.* FROM $wpdb->posts wposts INNER JOIN ( SELECT post_id FROM $wpdb->postmeta wpostmeta WHERE ( ( wpostmeta.meta_key = 'type' AND wpostmeta.meta_value LIKE '%Collection1%' ) OR ( wpostmeta.meta_key = 'type'AND wpostmeta.meta_value LIKE '%Collection2%' ) OR ( wpostmeta.meta_key = 'type'AND wpostmeta.meta_value LIKE '%Collection3%' ) OR ( wpostmeta.meta_key = 'type'AND wpostmeta.meta_value LIKE '%Collection4%' ) OR ( wpostmeta.meta_key = 'type'AND wpostmeta.meta_value LIKE '%Collection5%' ) ) GROUP BY post_id ) AS t ON t.post_id = wposts.ID WHERE wposts.post_status = 'publish' AND wposts.post_type = 'book' ORDER BY wposts.post_date DESC "; $pageposts = $wpdb->get_results($querydetails, OBJECT) ?> < ?php if ($pageposts): foreach ($pageposts as $post): setup_postdata($post); ?> 

< ?php the_title(); ?>

< ?php endforeach; endif; ?>

Ich hoffe, das wird für dich funktionieren 🙂

 < ?php $args = array( //Type & Status Parameters 'post_type' => 'book', 'post_status' => 'publish', //Order & Orderby Parameters 'order' => 'DESC', 'orderby' => 'date', //Pagination Parameters 'posts_per_page' => -1, // Here you can add you second meta value 'meta_query' => array( // ['relation'] => 'OR', // use this for a different comparison array( 'key' => 'type', 'value' => 'Collection1', 'compare' => '=' ), array( 'key' => 'type2', 'value' => 'Collection2', 'compare' => '=' ) ); $query = new WP_Query( $args ); ?> < ?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?> 

< ?php the_title(); ?>

< ?php endwhile; ?> < ?php else: ?> < ?php endif; ?> < ?php // Restore original Post Data wp_reset_postdata(); ?>

Ich würde WP_Query und eine Meta-Abfrage verwenden, siehe https://codex.wordpress.org/Class_Reference/WP_Query für weitere Informationen.

 // The Query $the_query = new WP_Query( $args ); // The Loop if ( $the_query->have_posts() ) { echo '
    '; while ( $the_query->have_posts() ) { $the_query->the_post(); echo '
  • ' . get_the_title() . '
  • '; } echo '
'; } else { // no posts found } /* Restore original Post Data */ wp_reset_postdata();

Fügen Sie ein Array mit Ihren Argumenten für $args und Sie sind fertig.