Итак, теперь я редактирую старую проблему, потому что ее сделали, но теперь у меня новая проблема. Я знаю запросы mysql, но не запросы WordPress. Я делаю это с запросами mysql и хорошо работаю, но сервер идет чертовски медленно. Я знаю, что я 'm работает около 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; ?>
Вы можете сделать это на фоне, используя некоторые 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');
Создание нового сообщения должно выполняться с wp_insert_post()
функций wp_insert_post()
.
Также такие задачи, как выбор удаленных ресурсов и вставка в базу данных при каждой загрузке страницы, обычно имеют мало смысла. Какой смысл запрашивать и вставлять одни и те же данные снова и снова?
Обновить.
Обновления не будут сильно отличаться от вложений для производительности. Перезаписывать все из корма каждый раз просто ужасно неэффективно.
Существует несколько оптимизаций для обработки, которые уменьшат нагрузку: