Get published posts and pages?

I’m working on a plugin to use gettext in posts and pages content.

I’m trying to get all published posts and pages in order scan them for translatable strings, but I cannot figure out how to do it.

Read More

This is what I’m trying:

$pages = $wpdb->query('SELECT * FROM wp_posts WHERE post_status = "publish"');
foreach ( $pages as $post ) {
    print_r($post);
}

Related posts

2 comments

  1. Don’t use pure SQL if you don’t have to. WordPress provides a useful and relatively solid class for retrieving post data. Use it.

    $args = array(
      'post_type' => array('post','page'),
      'post_status' => 'publish',
      'posts_per_page' => -1,
      'ignore_sticky_posts' => true,
    );
    $qry = new WP_Query($args);
    // Show post titles
    foreach ($qry->posts as $p) { 
        echo $p->post_title; 
    }
    

    Reference:
    http://codex.wordpress.org/Class_Reference/WP_Query

  2. Try this,

    global $wpdb;
    
    $posts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->posts WHERE post_status = 'publish'"));
    
    foreach ( $posts as $post ) {
        print_r($post);
    }
    

Comments are closed.