从wordpress数据库生成Rss

时间:2013-05-30 09:45:26

标签: php rss

我在wordpress和网站上有博客,在一台机器上使用wordpress RSS。 我的想法是连接到wordpress数据库,并在我的网站代码中为我的网站生成Rss。

有任何想法如何做到这一点?

在我发现的wordpress代码中

header('Content-Type: ' . feed_content_type('rss-http') . '; charset=' . get_option('blog_charset'), true);
$more = 1;

echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>'; ?>
<rss version="0.92">
<channel>
    <title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
    <link><?php bloginfo_rss('url') ?></link>
    <description><?php bloginfo_rss('description') ?></description>
    <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
    <docs>http://backend.userland.com/rss092</docs>
    <language><?php echo get_option('rss_language'); ?></language>
    <?php do_action('rss_head'); ?>

<?php while (have_posts()) : the_post(); ?>
    <item>
        <title><?php the_title_rss(); ?></title>
                <description><![CDATA[<?php the_excerpt_rss(); ?>]]></description>
        <link><?php the_permalink_rss() ?></link>
        <?php do_action('rss_item'); ?>
    </item>
<?php endwhile; ?>
</channel>
</rss>

但我不能只在我网站的代码中复制该代码。我在哪里可以找到bloginfo_rss方法代码?

在数据库中,我可以找到内容,标题等字段,但我无法找到描述字段并对该帖子排序logick。

 $this->_blogAdapter = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host' => 'localhost',
    'username' => 'root',
    'password' => 'password',
    'dbname' => 'database'
 ));

我可以连接到我的博客,但我不知道我怎么能把所有领域,logick和其他。有任何决心吗?

1 个答案:

答案 0 :(得分:0)

在控制器中:

$blog = new Model_Blog();
$post = '?lang=' . $lang;
$this->view->entries = $blog->getItems($lang);

模特:

protected function _createAdapter ()
{
     $this->_blogAdapter = new Zend_Db_Adapter_Pdo_Mysql(array(
        'host'     => 'xxx',
        'username' => 'xxx',
        'password' => 'xxx',
        'dbname'   => 'xxx'
     ));
     $this->_blogAdapter->query('SET NAMES UTF8');
}
protected function _getPosts ($limit = 0)
{
   $posts = $this->_blogAdapter->select()
            ->from(array ('p'=>'xxx_posts'))
            ->where ('post_status = ?','publish')
            ->where ('post_type = ?','post')
            ->order ('post_date DESC')
            ->limit ($limit)
            ->query()
            ->fetchAll();
   return $posts;
}
public function getItems ($lang ='ru', $need = 3)
{
    $posts=$this->_getPosts();
    $items=array();
    foreach ($posts as $key=>$post) {
        $items [$key] ['link'] = $post ['guid'].'&lang='.$lang;
        $items [$key] ['description'] = $this->_getText($post ['post_content'], $lang);
        $items [$key] ['title'] = $this->_getTitle($post ['post_title'], $lang);
    }
    $validItems = array_filter($items,array("self", "_valid"));
    if (count($validItems) > $need) {
        return array_slice($validItems, 0, $need);
    } else {
        return $validItems;
    }
}