来自另一个数据库的最新帖子

时间:2012-09-26 作者:Jamie Howard

我试图从另一个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; ?>

2 个回复
最合适的回答,由SO网友:jordanandree 整理而成

Wordpress wpdb类与通常的查询方式略有不同,因为您可以运行“普通”数据库查询。

您可以在Wordpress文档中查看wpdb类的文档: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;

SO网友:Muhammed
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;  
}
结束

相关推荐

Loops running into each other

我在一个页面上有3个循环,每个循环将不同的CPT拉入类似公文包的布局中。现场:http://iassc.baltimoredrew.com/providers/要点:https://gist.github.com/3503334但是,第二节和第三节的标记继承了前面循环的标记。此外,当我单击其中一个标记进行过滤时,它会过滤所有3个循环。JS问题?事实上,这一切都可能与JS有关吗?我知道可能有更好的方法来做到这一点,而不是多种自定义帖子类型&;循环。但现在有点像在里面。我不敢从头开始。