I denne veiledningen vil jeg dele om hvordan du oppretter en syndikator eller ping site, ved hjelp av WordPress-funksjonalitet. Denne funksjonen kan være nyttig for eiere som vil opprette en artikkelkatalog som tillater brukerne å sende inn artikler til deres nettside ved hjelp av RSS. For å gi litt oversikt over hvordan et slikt nettsted kan se ut, har jeg satt opp et Demo RSS-nettsted for denne opplæringen. La oss begynne.
Først må vi sette opp et sted der brukerne kan legge til sine RSS-feeder. Først tenkte jeg å bruke den eksisterende WordPress-profilen til brukerprofilen være tilstrekkelig, men hvis vi ønsker å tillate flere webinnlegg, kan det være plagsomt. Vi vil sette opp en ny tilpasset posttype for å håndtere nettadressen for brukerens RSS-feed. Du kan lære mer om egendefinerte innleggstyper ved å lese artikkelen for tilpasset posttypehjelperklasse.
Vi trenger bare 2 felt for den egendefinerte innleggstypen, en tittel og et sted for å legge til nettadressen (jeg bruker utdragskolonnen for å holde alt enkelt)
/ * Ny tilpasset posttype for ny RSS-håndtering. * / add_action ('init', 'create_rss_feed_uri'); funksjon create_rss_feed_uri () $ labels = array ('name' => _x ('RSS', 'Alle RSS'), 'singular_name' => _x ('RSS', 'enkelt element for rss'), 'add_new' => _x ('Legg til ny RSS', 'rss'), 'add_new_item' => __ ('Legg til ny RSS'), 'edit_item' => __ ('Rediger RSS'), 'new_item' => __ Ny RSS '),' view_item '=> __ (' Se RSS '),' search_items '=> __ (' Søk RSS '),' not_found '=> __ (' Ikke funnet '),' not_found_in_trash '=> __ $ 'Labels' => $ labels, 'label' => __ ('RSS'), 'singular_label' => __ (' RSS '),' public '=> sant,' show_ui '=> true,' capability_type '=>' post ',' hierarkisk '=> false,' revisions '=> true,' rewrite '=> true' '=> array (' tittel ',' utdrag ')); register_post_type (' rss ', $ menu_args);
Lagre følgende kode i ny fil (rss_feed_functions.php) og last det opp i følgende mappe / wp-content / mu-plugins /. Funksjonen vil bli lastet uten å måtte aktivere det som en vanlig plugin.
Etter at vi har satt opp vår egendefinerte posttype for å holde RSS-nettadressen, må vi sette opp en side der en bruker kan sende inn nettadressen sin. Følgende funksjon vil opprette et skjema, og du kan inkludere det til en hvilken som helst side ved hjelp av kortnummeret vi definerer i koden.
Vi trenger et inntastingsfelt for å la en bruker legge til en tittel og en URL for RSS.
Neste ting, vi må håndtere skjemaet når det er lagt ut. Følgende kode vil tillate oss å forberede spørringen for å sette inn dataene på vår nettside.
/ * forberede og behandle rss-dataene * / $ newrss_post = array ('post_title' => $ _POST ["rss_title"], "post_excerpt" => $ _POST ["rss_uri"], 'post_author' => $ current_user-> ID, 'post_status' => 'publiser', 'post_type' => "rss"); $ post_id = wp_insert_post ($ newrss_post);
Men før vi legger inn alle dataene vi mottok fra skjemaet, vil vi gjerne validere feed-nettadressen og tittelen først. For å enkelt validere feedadressen, bruker vi følgende WordPress-funksjon for å sjekke om feedadressen returnerer et gyldig innhold.
include_once (ABSPATH. WPINC. '/feed.php'); / * validere feed URL * / $ rss = hente_feed (esc_url ($ _ POST ["rss_uri"])); hvis (! er_wp_error ($ rss)): / * Forbered rss innhold * / $ newrss_post = array ('post_title' => esc_html ($ _ POST ["rss_title"]), 'post_excerpt' => esc_url ($ _ POST ["rss_uri "]), 'post_author' => $ current_user-> ID, 'post_status' => 'publiser', 'post_type' =>" rss "); / * Sett inn rss-detaljer i databasen * / $ post_id = wp_insert_post ($ newrss_post); ellers: ekko "Det var feil å validere RSS-feedet ditt, prøv igjen"; slutt om;
Hvis alt fungerer bra, setter vi inn dataene i databasen. Den komplette funksjonen med kortkodefunksjonalitet vil se ut som koden vist nedenfor, vi kan legge til hele funksjonen i vår rss_feed_functions.php fil.
add_shortcode ('rss_form_submit', 'create_rss_feed_form'); / * Skjema for å sende inn ny RSS URL * / funksjon create_rss_feed_form () echo ''; hvis (isset ($ _ POST ["rss_title"]): / * validere feed URL * / $ rss = hente_feed (esc_url ($ _ POST ["rss_uri"])); hvis (! er_wp_error ($ rss)): / * Forbered rss innhold * / $ newrss_post = array ('post_title' => esc_html ($ _ POST ["rss_title"]), 'post_excerpt' => esc_url ($ _ POST ["rss_uri "]), 'post_author' => $ current_user-> ID, 'post_status' => 'publiser', 'post_type' =>" rss "); / * Sett inn rss-detaljer i databasen * / $ post_id = wp_insert_post ($ newrss_post); ekko "RSS vellykket sendt"; ellers: ekko "Det var feil å validere RSS-feedet ditt, prøv igjen"; slutt om; slutt om;
Nå kan vi bruke kortnummeret [Rss_form_submit]
i noen av våre sider, og du kan stile skjemaet slik at det passer til ditt webdesign. Du vil kanskje bare tillate at registrert bruker kan se og bruke siden.
Siden vi allerede har feed-nettadressen i databasen, vil vi neste gang behandle artikkelen som brukerne vil sende inn til vårt ping-nettsted. Vi trenger en ny side for dette, og for å sikre at funksjonen kan brukes på noen temaer, bruker vi samme tilnærming som innmatingsadressen for innlevering av artikkelen for artikkelen, ved hjelp av en funksjon med kortnummer.
Først av alt, må vi lese feedet fra den nåværende brukeren.
global $ current_user, $ wpdb; get_currentuserinfo (); / * tilpasset søk for å hente tilpasset posttype uten å gjengi det * / $ rssfeed = $ wpdb-> get_results ("VELG * FRA $ wpdb-> innlegg hvor post_type = 'rss' og post_status = 'publiser' og post_author =". $ current_user-> ID "").;
Hvis det er funnet RSS-feed, kan vi begynne å løse feed-nettadressen, og hente den siste artikkelen fra feedet.
foreach ($ rssfeed as $ post): setup_postdata ($ post); ekko ""$ Post-> POST_TITLE."
"$ rss = fetch_feed (esc_url ($ post-> post_excerpt)), hvis (! is_wp_error ($ rss)): $ item = $ rss-> get_item (0); echo esc_html ($ item-> get_title ()) ; endif; endforeach;
Nå har vi allerede den første artikkelen som skal settes inn på vår nettside. Før vi fortsetter med å legge den inn i databasen, er det best å sjekke først om artikkelen allerede finnes på vår nettside. Vi vil sjekke tittelen på feed elementet hvis den allerede eksisterer, dette er bare en grunnleggende metode, du kan sjekke flere attributter for å sikre at det ikke finnes noen duplisert artikkel i databasen.
hvis ($ wpdb-> get_row ("SELECT post_title FROM $ wpdb-> innlegg WHERE post_title = '". $ item -> get_title ().' 'OG post_status =' publiser '', 'ARRAY_A')): ekko "Nei Ny artikkel funnet "; ellers: echo esc_html ($ item-> get_title ()); slutt om;
Vi kan nå behandle dataene vi henter fra feedet til vår database. For å gjøre det enkelt for brukeren vår, vil vi inkludere skjemaet umiddelbart etter at vi henter og sjekker nettadressen.
ekko '';
I eksempelet behandler vi tittelen, innholdet, permalinkene og datoen som skal settes inn i databasen vår. Brukere vil se tittelen og sende knappen som skjermbildet nedenfor.
Siste skritt vi trenger å gjøre er å sette inn dataene i databasen. Vi utarbeider uttalelsen før vi kjører spørringen.
$ prepare_content = array ('post_date' => $ _POST ["date"], "post_title" => esc_html ($ _ POST ["post_title"]), "post_content" => $ _POST ["innhold"], "post_author" => $ current_user-> ID, 'post_status' => 'publiser', 'post_type' => 'rss');
Vi vil behandle disse detaljene først før vi legger inn de ekstra dataene i vår tilpassede meta-boks.
$ post_id = wp_insert_post ($ prepare_content); add_post_meta ($ post_id, 'feed_item_permalink', esc_url ($ _ POST ["permalink"]));
Nå er alle artikkeldataene lagt inn i databasen. Vi har nå en syndikator eller ping site klar til bruk. Det er flere muligheter du kan legge til for å forbedre kvaliteten på ditt nettsted, men dette var en enkel introduksjon.
Jeg har tatt med hele kildekoden (lenken øverst i denne artikkelen) som jeg bruker på Demo RSS-siden. Hvis du har noen forslag eller forbedringer for denne opplæringen, gleder jeg meg til å lese ideene og forslagene i kommentarene nedenfor.