Skip to content

Instantly share code, notes, and snippets.

@vc27
Created January 5, 2012 14:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vc27/1565570 to your computer and use it in GitHub Desktop.
Save vc27/1565570 to your computer and use it in GitHub Desktop.
This is an example of two ways to query the same posts.
<?php
$array_of_data = array('Array','Of','Data');
/**
* meta_query WP_Query
**/
$query = array(
'post_type' => 'custom_post_type',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'menu_order',
'order' => 'ASC'
);
if ( is_array( $array_of_data ) ) {
$query['meta_query']['relation'] = 'OR';
foreach ( $array_of_data as $meta_value ) {
$query['meta_query'][] = array(
'key' => 'meta_key',
'value' => $meta_value,
);
}
}
$wp_query = new WP_Query();
$wp_query->query( $query );
/**
* post__in WP_Query
**/
global $wpdb;
$meta_value__in = "'" . implode( "', '", $array_of_data ) . "'";
$querystr = " SELECT $wpdb->postmeta.post_id
FROM $wpdb->postmeta
WHERE
$wpdb->postmeta.meta_key = 'meta_key' AND
$wpdb->postmeta.meta_value IN ( $meta_value__in )
";
$results = $wpdb->get_results( $querystr );
$post_in = false;
foreach ( $results as $result )
$post_in[] = $result->post_id;
$query = array(
'post_type' => 'post_type',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'menu_order',
'order' => 'ASC',
'post__in' => $post_in,
);
<?php
$array_of_data = array('Array','Of','Data');
/**
* meta_query WP_Query
**/
$query = array(
'post_type' => 'custom_post_type',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'menu_order',
'order' => 'ASC'
);
if ( is_array( $array_of_data ) ) {
$query['meta_query']['relation'] = 'OR';
foreach ( $array_of_data as $meta_value ) {
$query['meta_query'][] = array(
'key' => 'meta_key',
'value' => $meta_value,
);
}
}
$wp_query = new WP_Query();
$wp_query->query( $query );
/**
* post__in WP_Query
**/
global $wpdb;
$meta_value__in = false;
$meta_value__in = "'" . implode( "', '", $array_of_data ) . "'";
$querystr = " SELECT $wpdb->postmeta.post_id
FROM $wpdb->postmeta
WHERE
$wpdb->postmeta.meta_key = 'meta_key' AND
$wpdb->postmeta.meta_value IN ( $meta_value__in )
";
$results = $wpdb->get_results( $querystr );
$post_in = false;
foreach ( $results as $result )
$post_in[] = $result->post_id;
$query = array(
'post_type' => 'post_type',
'post_status' => 'publish',
'posts_per_page' => -1,
'orderby' => 'menu_order',
'order' => 'ASC',
'post__in' => $post_in,
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment