从提要获取完整内容并在我的网站中保存副本

时间:2011-10-09 作者:Mohit Bumb

好的,现在我正在编辑旧问题,因为它已经完成了,但现在我有了新问题,我了解mysql查询,但不了解wordpress查询,我正在使用mysql查询,它工作得很好,但服务器速度非常慢,我知道我每页面加载大约运行30个查询,所以有没有办法在wordpress查询或其他帮助下轻松完成???

 <?php $rss = fetch_feed(\'http://example.com/feed\');
    if (!is_wp_error( $rss ) ) :
        $maxitems = $rss->get_item_quantity(10); 
        $rss_items = $rss->get_items(0, $maxitems); 
    endif;
     if ($maxitems == 0) ;
        else
        foreach ( $rss_items as $item ) :
        $posttitle=$item->get_title();
        $postcontent=$item->get_description();
        $pt=mysql_real_escape_string($posttitle);
        $pc=mysql_real_escape_string($postcontent);
        $result=mysql_query("SELECT post_title FROM wp_posts WHERE post_title=\'".$pt."\'");
        if(mysql_num_rows>0)
        {
        echo "hello";
        mysql_query("UPDATE wp_posts SET post_title=\'".$pt."\',post_content=\'".$pc."\' WHERE post_title=\'".$pt."\'");
        }
        else
        {
        echo "hi";
        mysql_query("INSERT INTO wp_posts (post_title,post_content) VALUES (\'".$pt."\',\'".$pc."\')");
        }
        endforeach; ?>

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

您可以在后台使用一些ajax进行页面加载,下面是一个未经测试的示例来说明这一想法。

jQuery(function() {
    jQuery.get(\'http://domain.tld/remote\');
});



<?php
function is_ajax()
{
    return (isset($_SERVER[\'HTTP_X_REQUESTED_WITH\']) and strtolower($_SERVER[\'HTTP_X_REQUESTED_WITH\']) == \'xmlhttprequest\');
}

function add_rewrite_rules($wp_rewrite)
{
    $new_rules = array
    (
        \'remote\' => \'index.php?remote=true\'
    );

    $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}

function add_query_vars($vars)
{
    array_push($vars, \'remote\');
    return $vars;
}

function remote_feed()
{
    if (($var = get_query_var(\'remote\')) and is_ajax())
    {
        // get remote feed and insert/update posts
    }
}

add_action(\'generate_rewrite_rules\', \'add_rewrite_rules\');
add_filter(\'query_vars\',\'add_query_vars\');
add_action(\'template_redirect\', \'remote_feed\');

SO网友:Rarst

创建新帖子应使用wp_insert_post() 功能。

此外,在每次页面加载时提取远程资源和插入数据库等任务通常也没有什么意义。反复请求和插入相同的数据有什么意义?

Update.

在性能方面,更新与插入没有太大区别。每次覆盖feed中的所有内容都是非常低效的。

有两种优化可以减少负载:

减少代码运行频率,并将其与页面加载分离,WP Cron 此功能适用于此,仅插入新帖子,这意味着您需要根据一些标准(取决于您的源数据)识别数据库中已经存在的帖子。如果您仍要更新已经存在的帖子,请首先尝试确定它们是否已实际更改,例如通过比较日期

结束

相关推荐

帮助添加过滤器(‘The_Content’,‘Some_Function’)和多个匹配

我有一个网站,用户可以通过在内容框中输入快捷码将幻灯片插入帖子。他还可以通过在同一个框中添加视频代码来添加视频。我需要将这两个短代码彼此分离,以便可以控制何时显示幻灯片以及何时显示视频。我正在使用add\\u filter和preg\\u match来匹配正确的短代码,然后回显每个匹配-但是它当前只显示每个匹配中的第一个匹配。这是我的代码-我不确定我是否完全理解add\\u filter的工作原理,因此我的显示方法可能有误:视频:/* VIDEO SLICE */ function video_s