În acest tutorial, voi împărtăși cum să creați un sindicator sau un site ping, utilizând funcționalitatea WordPress. Această funcție poate fi utilă pentru proprietarii care doresc să creeze un director de articole care să permită utilizatorilor lor să trimită articole pe site-ul lor folosind RSS. Pentru a oferi o imagine de ansamblu asupra modului în care un astfel de site poate arăta, am creat un site RSS Demo pentru acest tutorial. Acum, să începem.
În primul rând, trebuie să configurați un loc în care utilizatorii să poată adăuga fluxurile RSS. La început am crezut că folosirea secțiunii de profil a utilizatorului WordPress existent ar fi suficientă, dar dacă vrem să permitem depunerea mai multor pagini web, poate fi dificilă. Vom configura un nou tip de post personalizat pentru a gestiona adresa URL a fluxului RSS al utilizatorului. Puteți afla mai multe despre tipurile personalizate de articole postate prin citirea articolului de clasă postare personalizată.
Vom avea nevoie de 2 câmpuri numai pentru tipul postului personalizat, un titlu și un loc pentru a adăuga adresa URL (folosesc coloana extras pentru a păstra totul simplu)
/ * Tip post nou personalizat pentru manipularea RSS-ului nou. * / add_action ('init', 'create_rss_feed_uri'); funcția create_rss_feed_uri () $ labels = array ('nume' => _x ('RSS', 'toate RSS'), 'singular_name' => => _x ('Adăugați RSS nou', 'rss'), 'add_new_item' => __ (' ), "Not_found" => __ ("Nimic găsit"), "not_found_in_trash" => __ ("Nimic găsit în coșul de gunoi"), "parent_item_colon" => "); $ meniu_args = array (" etichete "=> etichete $, RSS '),' public '=> true,' show_ui '=> true,' capability_type '=>' post ',' hierarchical '=> false,' revisions '=> true,' rewrite ' '=> array (' titlu ',' extras ')); register_post_type (' rss ', $ menu_args);
Salvați următorul cod în fișierul nou (rss_feed_functions.php) și încărcați-l în următorul dosar / wp-content / plugins / mu-. Funcția va fi încărcată fără a fi nevoie să o activați ca un plugin normal.
După ce ne-am configurat tipul de articol personalizat pentru a păstra adresa URL RSS, trebuie să configurați o pagină în care un utilizator poate trimite adresa URL. Următoarea funcție va crea o formă și o puteți include în orice pagină utilizând codul scurt pe care îl definim în cod.
Avem nevoie de un câmp de intrare pentru a permite unui utilizator să adauge un titlu și o adresă URL pentru RSS.
Următorul lucru, trebuie să ne ocupăm de formular odată ce este postat. Următorul cod ne va permite să pregătim interogarea pentru a insera datele pe site-ul nostru.
/ * pregătește și procesează datele rss * / $ newrss_post = array ('post_title' => $ _POST ["rss_title"], post_excerpt => $ _POST ["rss_uri"], post_author = ID, 'post_status' => 'publicare', 'post_type' => "rss"); $ post_id = wp_insert_post ($ newrss_post);
Dar, înainte de a introduce toate datele pe care le-am primit din formular, am dori să validăm mai întâi URL-ul feedului și titlul. Pentru a valida cu ușurință adresa URL a fluxului, vom folosi următoarea funcție WordPress pentru a verifica dacă adresa URL a feedului returnează un conținut valid.
include_once (ABSPATH.WPINC. '/feed.php'); / * validarea URL-ului feedului * / $ rss = fetch_feed (esc_url ($ _ POST ["rss_uri"])); ($ _ POST ["rss_title"]), 'post_excerpt' => esc_url ($ _ POST ["rss_uri "])," post_author "=> $ curent_user-> ID," post_status "=>" publicare "," post_type "=>" rss "); / * inserați detalii rss în baza de date * / $ post_id = wp_insert_post ($ newrss_post); altceva: ecou "A apărut o eroare în validarea feedului RSS, încercați din nou"; endif;
Dacă totul funcționează bine, introducem datele de alimentare în baza de date. Funcția completă cu funcționalitate scurtă va arăta ca și codul de mai jos, putem adăuga funcția completă în funcția noastră rss_feed_functions.php fişier.
add_shortcode ('rss_form_submit', 'create_rss_feed_form'); / * Formular pentru trimiterea noului URL RSS * / function create_rss_feed_form () echo '„; dacă isset ($ _ POST ["rss_title"])): / * validează URL-ul feedului * / $ rss = fetch_feed (esc_url ($ _ POST ["rss_uri"])); ($ _ POST ["rss_title"]), 'post_excerpt' => esc_url ($ _ POST ["rss_uri "])," post_author "=> $ curent_user-> ID," post_status "=>" publicare "," post_type "=>" rss "); / * inserați detalii rss în baza de date * / $ post_id = wp_insert_post ($ newrss_post); echo "RSS a fost trimis cu succes"; altceva: ecou "A apărut o eroare în validarea feedului RSS, încercați din nou"; endif; endif;
Acum putem folosi codul scurt [Rss_form_submit]
în oricare dintre paginile noastre și puteți personaliza formularul pentru a se potrivi cu designul site-ului dvs. Poate doriți să permiteți numai utilizatorului înregistrat să vadă și să utilizeze acea pagină.
Deoarece avem deja adresa URL a feed-ului în baza noastră de date, în continuare dorim să procesăm articolul pe care utilizatorii doresc să îl trimită site-ului nostru ping. Vom avea nevoie de o pagină nouă pentru aceasta și pentru a ne asigura că funcția poate fi utilizată pe orice temă, vom folosi aceeași abordare ca trimiterea URL a feed-ului pentru trimiterea articolului, folosind o funcție cu cod scurt.
Mai întâi de toate, trebuie să citim feedul de la utilizatorul curent.
globale $ current_user, $ wpdb; get_currentuserinfo (); / * interogare particularizată pentru a prelua tipul postului personalizat fără a-l randa * / $ rssfeed = $ wpdb-> get_results ("SELECT * FROM $ wpdb-> posturi WHERE post_type = 'rss' ȘI post_status = 'publica' AND post_author =". current_user-> ID "");
Dacă există un feed RSS găsit, atunci putem începe buclă URL-ul de alimentare, și de a prelua ultimul articol din feed.
foreach ($ rssfeed ca $ post): setup_postdata ($ post); ecou ""$ Post-> POST_TITLE."
"$ rss = fetch_feed (esc_url ($ post-> post_excerpt)); dacă (! is_wp_error ($ rss)): $ item = $ rss-> get_item (0); ; endif; endforeach;
Acum avem deja primul articol care urmează să fie inserat pe site-ul nostru. Înainte de a continua cu adăugarea acesteia în baza de date, este mai bine să verificați mai întâi dacă articolul există deja pe site-ul nostru. Vom verifica titlul elementului feed dacă acesta există deja, aceasta este doar o metodă de bază, puteți verifica mai multe atribute pentru a vă asigura că nu există un articol duplicat în baza de date.
dacă $ wpdb-> get_row ("SELECT post_title FROM $ wpdb-> posturi WHERE post_title = '". $ item -> get_title ().' 'AND post_status =' publicare ',' ARRAY_A '): articol nou găsit "; altceva: echo esc_html ($ item-> get_title ()); endif;
Acum putem procesa datele din feed în baza noastră de date. Pentru ca acest lucru să fie simplu pentru utilizatorul nostru, vom include formularul de trimitere imediat după ce vom prelua și vom verifica adresa URL.
echo "„;
În acest exemplu, procesăm titlul, conținutul, permalinks și data pentru a fi inserate în baza noastră de date. Utilizatorii vor vedea titlul și butonul de trimitere ca imaginea de mai jos.
Ultimul pas pe care trebuie să-l facem este să inserați datele în baza de date. Pregătim instrucțiunea înainte de a rula interogarea.
$ post_content = array ('post_date' => $ _POST ["date"], => $ current_user-> ID, 'post_status' => 'publica', 'post_type' => 'rss');
Vom procesa aceste detalii mai întâi înainte de a introduce datele suplimentare în caseta de meta personalizată.
$ post_id = wp_insert_post ($ pregătire_content); add_post_meta ($ post_id, 'feed_item_permalink', esc_url ($ _ POST ["permalink"]));
Acum, toate datele despre articol sunt inserate cu succes în baza de date. Acum avem un site de sindicator sau ping gata de utilizare. Există mai multe posibilități pe care le puteți adăuga pentru a îmbunătăți calitatea site-ului ping, dar aceasta a fost o simplă introducere.
Am inclus codul sursă complet (link-ul din partea de sus a acestui articol) pe care îl folosesc pe site-ul RSS Demo. Dacă aveți sugestii sau îmbunătățiri pentru acest tutorial, aștept cu nerăbdare să citiți ideile și sugestiile din comentariile de mai jos.