web-dev-qa-db-ja.com

別のデータベースからの最新の投稿

私は別のWordpressデータベースからの最新の投稿を追加しようとしています(実際には同じサーバー上にあります)が、次のエラーを受け取ります。

Fatal error: Call to undefined method wpdb::query_posts() in /var/www/site/wp-content/themes/custom/footer.php on line 68

これがコードです:

<!-- .entry-content -->
<?php
$originaldb = new wpdb('username', 'password', 'db', 'localhost');
$originaldb->query_posts( 'posts_per_page=1' );  
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 

<header class="entry-header">
        <div class="entry-meta">
            <?php echo '<span class="entry-day">'.get_the_date('j').'</span><br><span class="entry-month">'.get_the_date('M').'</span>'; ?>
        </div>
        <div class="title-box">
            <h2 class="blog-title"><a href="<?php the_permalink(); ?>"><?php the_title() ?></a></h2>
            <?php echo '<a href="'.get_author_posts_url( get_the_author_meta( 'ID' ) ).'">' . the_author() . '</a>'; ?>
        </div>
        <div class="clear"></div>
    </header>
    <div class="entry-content">
        <?php the_excerpt(); ?>
    </div>

<?php endwhile; else: ?>  
Testing has failed
<?php endif; ?>
1
Jamie Howard

Wordpressのwpdbクラスは、 "Vanilla"データベースクエリを実行するという点で、通常のクエリ方法とは少し異なります。

Wpdbクラスに関するドキュメントはWordpressのドキュメントにあります。 http://codex.wordpress.org/Class_Reference/wpdb#Run_Any_Query_on_the_Database

また、あなたのコードに関して、あなたはここでその行を変更することができるはずです:

$originaldb->query_posts( 'posts_per_page=1' );

このようなものに:

$results = $originaldb->get_results( "SELECT * FROM $wpdb->posts LIMIT 1" );

これはあなたがループでそれから処理できるポストの配列をあなたに提供するでしょう:

if($results):
  foreach($results as $post): setup_postdata($post); 
    // do stuff with normal wp template tags
  endforeach;
else: 
  // no posts 
endif;
1
jordanandree
function get_other_posts() {
    $wpdb_old = wp_clone( $GLOBALS['wpdb'] );
    $wpdb_new = &$GLOBALS['wpdb'];  

    // All you have to care about following two lines
    $wpdb_new = new wpdb( 'your_db_username', 'db_password', 'new_db_name', 'localhost' );
    $wpdb_new->set_prefix( 'wp_' );

    // Now whatever function you'll call, it will use new database
    $posts = get_posts( 'numberposts=5' );

    // We are done so lets take the old wpdb back on its position
    $wpdb_new = $wpdb_old;  
}
1
Muhammed