Display posts by custom fields with $wpdb->get_results() example Print

  • 1

Display posts by custom fields with $wpdb->get_results()

Example:
In this example I'm ordering the posts based on the custom field value (you can change that to whatever suits your needs).
This code has helped me in many projects.

$str = "
    SELECT $wpdb->posts.*
    FROM $wpdb->posts, $wpdb->postmeta
    WHERE $wpdb->posts.ID = $wpdb->postmeta.post_id
    AND $wpdb->postmeta.meta_key = 'custom-field-slug'
    AND $wpdb->posts.post_status = 'publish'
    AND $wpdb->posts.post_type = 'your_post_type'
    AND $wpdb->postmeta.meta_value = 'desired_value'
    ORDER BY $wpdb->postmeta.meta_value ASC
";
$result = $wpdb->get_results($str);
                     
         if ( $result ) {
 
            foreach ( $result as $post ) {
                setup_postdata ( $post );

               // your code goes here
           }
        }


Was this answer helpful?

« Back