Erhalten Sie den vollständigen Inhalt von Feeds und speichern Sie eine Kopie auf meiner Website

Okay Jetzt bearbeite ich altes Problem, weil es fertig ist, aber jetzt habe ich ein neues Problem. Ich kenne MySQL-Abfragen, aber keine WordPress-Abfragen. Ich mache das mit MySQL-Abfragen und es funktioniert gut, aber der Server geht verdammt langsam Läuft etwa 30 Abfrage pro Seite laden, gibt es also eine Möglichkeit, es einfach mit Hilfe von WordPress-Abfragen oder etwas anderes zu tun ???

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; ?> 

Solutions Collecting From Web of "Erhalten Sie den vollständigen Inhalt von Feeds und speichern Sie eine Kopie auf meiner Website"

Sie können dies im Hintergrund mit einigen Ajax beim Laden der Seite tun, hier ist ein ungetestetes Beispiel, um die Idee zu zeigen.

 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'); 

Die Erstellung eines neuen wp_insert_post() sollte mit wp_insert_post() functionen erfolgen.

Auch Aufgaben wie das Abrufen von Remote-Ressourcen und das Einfügen in databaseen bei jeder Seitenauslastung machen normalerweise wenig Sinn. Was bringt es, immer wieder dieselben Daten anzufordern und einzufügen?

Aktualisieren.

Updates unterscheiden sich nicht wesentlich von Einsätzen für die performance. Alles aus dem Feed zu überschreiben ist einfach schrecklich ineffizient.

Es gibt einige zu verarbeitende Optimierungen, die die Last reduzieren würden:

  • Code weniger oft ausführen und ihn von Seitenlasten entkoppeln, dafür eignet sich die WP Cron- functionalität
  • Füge nur neue Beiträge ein, dh du musst Beiträge, die bereits in der database vorhanden sind, anhand einiger Kriterien identifizieren (abhängig von deinen Quelldaten)
  • Wenn Sie die bereits vorhandenen Posts noch aktualisieren möchten, versuchen Sie zuerst festzustellen, ob sie tatsächlich geändert wurden, z. B. durch den Vergleich von Daten