XML-RPC er en protokoll for eksterne prosessanrop som bruker XML for datautvekslingen, og det bruker mest HTTP for det aktuelle anropet. I XML-RPC oppretter klienten som ønsker å ringe til en ekstern metode, innspillparametrene i form av XML, og sender den via en HTTP-forespørsel til en ekstern server som implementerer XML-RPC-protokollen. Den eksterne serveren som implementerer XML-RPC-protokollen får forespørselen og utfører deretter den eksterne metoden og returnerer resultatet tilbake i XML-format.
I denne artikkelen skal vi se hvordan du kan ringe metoder på WordPress-installasjonen din ved hjelp av XML-RPC.
WordPress er en komplett blogging plattform. Det er laget svært tilpassbart og åpent for andre systemer for å koble til og kommunisere med det. XML-RPC i WordPress hjelper denne åpenheten til WordPress ved å la andre systemer eller programvare utføre operasjoner på WordPress-installasjonen, selv eksternt. Så å bruke WordPress XML-RPC kan lage WordPress blogging klienter, noe annet programvare som gjør noen batch oppgaver som å skape flere innlegg fra en fil, etc.
Som standard er XML-RPC ikke aktivert på WordPress-installasjonen. For at WordPress-installasjonen skal kunne betjene XML-RPC-forespørsler må du aktivere denne funksjonen på nettstedet ditt.
For å aktivere denne funksjonen, vil du gå til administrasjonen. Der, under Innstillinger -> Skriving må du aktivere XML-RPC-alternativet som vist nedenfor.
Alle XML-RPC-forespørsler sendes til xmlrpc.php fil som er til stede i din viktigste WordPress installasjons katalog. Filen gjør i utgangspunktet en bootstrap for å laste inn WordPress-miljøet og oppretter deretter et objekt av klassen wp_xmlrpc_server
som er tilstede på stedet wp-includes / klasse-wp-xmlrpc-server.php.
De wp_xmlrpc_server
Klassen er ansvarlig for å håndtere all XML-RPC-forespørselen som kommer fra XML-RPC-klientene.
WordPress XML-RPC server støtter flere typer på APIer for XML-RPC. Følgende er typer APIer som WordPress XML-RPC-serveren støtter:
Selv om det ikke er mye dokumentasjon på alt dette, en kort titt på wp_xmlrpc_server
klassen vil bidra til å vite det eksakte navnet på APIene støttet av WordPress 'XML-RPC-server.
funksjon wp_xmlrpc_server () $ this-> methods = array (// WordPress API 'wp.getUsersBlogs' => 'dette: wp_getUsersBlogs', 'wp.getPage' => 'dette: wp_getPage', 'wp.getPages' => 'this: wp_getPages', 'wp.newPage' => 'this: wp_newPage', 'wp.deletePage' => 'dette: wp_deletePage', 'wp.editPage' => 'dette: wp_editPage', 'wp.getPageList' => 'dette: wp_getPageList', 'wp.getAuthors' => 'dette: wp_getAuthors', 'wp.getCategories' => 'dette: mw_getCategories', // Alias 'wp.getTags' => 'dette: wp_getTags' 'wp.newCategory' => 'this: wp_newCategory', 'wp.deleteCategory' => 'dette: wp_deleteCategory', 'wp.suggestCategories' => 'dette: wp_suggestCategories', 'wp.uploadFile' => 'dette: mw_newMediaObject ', // Alias' wp.getCommentCount '=>' dette: wp_getCommentCount ',' wp.getPostStatusList '=>' dette: wp_getPostStatusList ',' wp.getPageStatusList '=>' dette: wp_getPageStatusList ',' wp.getPageTemplates '=' > 'this: wp_getPageTemplates', 'wp.getOptions' => 'dette: wp_getOptions', 'wp.setOptions' => 'dette: wp_setOptions', 'wp.getComment' => 'dette: wp_getComment ',' wp.editComment '=>' this: wp_getComments ',' wp.deleteComment '=>' dette: wp_deleteComment ',' wp.editComment '=>' dette: wp_editComment ',' wp.newComment '=>' dette: wp_newComment ',' wp.getCommentStatusList '=>' dette: wp_getCommentStatusList ',' wp.getMediaItem '=>' dette: wp_getMediaItem ',' wp.getMediaLibrary '=>' dette: wp_getMediaLibrary ',' wp.getPostFormats '=' > 'this: wp_getPostFormats', // Blogger API 'blogger.getUsersBlogs' => 'this: blogger_getUsersBlogs', 'blogger.getUserInfo' => 'this: blogger_getUserInfo', 'blogger.getPost' => 'dette: blogger_getPost' 'blogger.getRecentPosts' => 'this: blogger_getRecentPosts', 'blogger.getTemplate' => 'dette: blogger_getTemplate', 'blogger.setTemplate' => 'dette: blogger_setTemplate', 'blogger.newPost' => 'dette: blogger_newPost ',' blogger.editPost '=>' dette: blogger_editPost ',' blogger.deletePost '=>' dette: blogger_deletePost ', // MetaWeblog API (med MT-utvidelser til strukturer)' metaWeblog.newPost '=>' dette: mw_newPost ',' metaWeblog.editPost '=>' dette: mw _editPost ',' metaWeblog.getCost '=>' dette: mw_getPost ',' metaWeblog.getRecentPosts '=>' dette: mw_getRecentPosts ',' metaWeblog.getCategories '=>' dette: mw_getCategories ',' metaWeblog.newMediaObject '=>' dette: mw_newMediaObject ', // MetaWeblog API-aliaser for Blogger-API // se http://www.xmlrpc.com/stories/storyReader$2460' metaWeblog.deletePost '=>' dette: blogger_deletePost ',' metaWeblog.getTemplate '=> 'this: blogger_getTemplate', 'metaWeblog.setTemplate' => 'dette: blogger_setTemplate', 'metaWeblog.getUsersBlogs' => 'dette: blogger_getUsersBlogs', // MovableType API 'mt.getCategoryList' => 'dette: mt_getCategoryList' mt.getRecentPostTitles '=>' dette: mt_getRecentPostTitles ',' mt.getPostCategories '=>' dette: mt_getPostCategories ',' mt.setPostCategories '=>' dette: mt_setPostCategories ',' mt.supportedMethods '=>' dette: mt_supportedMethods ' , 'mt.supportedTextFilters' => 'dette: mt_supportedTextFilters', 'mt.getTrackbackPings' => 'dette: mt_getTrackbackPings', 'mt.publishPost' => 'dette: mt_publishPost', // PingBack 'pingback.ping' => 'this: pingback_ping', 'pingback.extensions.getPingbacks' => 'dette: pingback_extensions_getPingbacks', 'demo.sayHello' => 'dette: sayHello', 'demo.addTwoNumbers' => ' dette: addTwoNumbers ');
XMLRPClientWordPress
Klasse i PHPNå skal vi lage en klasse XMLRPClientWordPress
i PHP som vil gi funksjoner for å utføre forskjellige operasjoner på WordPress-installasjonen via XML-RPC-anrop.
klasse XMLRPClientWordPress var $ XMLRPCURL = ""; var $ UserName = ""; var $ PassWord = "";
Først vil vi opprette en klasse og ha tre medlemmer i den for å holde verdien av XML-RPC-nettadressen til WordPress-installasjonen og brukernavn og passord for installasjonen.
XML-PRC-nettadressen er http://yourwordpressinstall.com/xmlrpc.php, og brukernavnet og passordet er brukernavnet og passordet til en bruker av bloggen med riktig tilgang.
Da skal vi lage en konstruktør for å ta disse verdiene og lagre dem i klassemedlemmene som følger.
// Konstruktørens offentlige funksjon __construct ($ xmlrpcurl, $ brukernavn, $ passord) $ this-> XMLRPCURL = $ xmlrpcurl; $ this-> UserName = $ brukernavn; $ this-> PassWord = $ passord;
Da skal vi lage en Send forespørsel
funksjon som vil ta forespørselen navn og parametrene for forespørselen som input. Funksjonen vil da opprette en XML-forespørsel fra inngangsparametrene og deretter sende forespørselen til XML-RPC-nettadressen til WordPress og returnere resultatene.
Funksjonen er som følger:
funksjon send_request ($ requestname, $ params) $ request = xmlrpc_encode_request ($ requestname, $ params); $ ch = curl_init (); curl_setopt ($ ch, CURLOPT_POSTFIELDS, $ request); curl_setopt ($ ch, CURLOPT_URL, $ this-> XMLRPCURL); curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ ch, CURLOPT_TIMEOUT, 1); $ results = curl_exec ($ ch); curl_close ($ ch); returnerer $ resultater;
Denne funksjonen bruker PHP-funksjonen xmlrpc_encode_request
som lager XML-forespørselen, bruker vi krøll for å sende forespørselen på XML-RPC-nettadressen til WordPress-installasjonen som er lagret i klassen variabelen.
Da returnerer denne funksjonen resultatet som det kommer fra XML-RPC-serveren.
Si hei
XML-RPC-forespørsel til din WordPress-installasjonFor å sjekke om vi kan kalle metodene på WordPress installasjonsserveren, vil vi ringe demo.sayHello
metode, det tar ingen parameter og som hvis kjører riktig, returnerer WordPress XML-RPC-serveren en streng "Hei!".
Funksjonen som skal ringes demo.sayHello
er som følgende:
funksjon sayHello () $ params = array (); returnere $ this-> send_request ('demo.sayHello', $ params);
I utgangspunktet som demo.sayHello
Metoden tar ikke noen parametere vi sender et tomt array som parameter og deretter ringer Send forespørsel
ved å sende forespørselenavnet som demo.sayHello
.
For å ringe denne funksjonen må du opprette et objekt av klasse XMLRPClientWordPress
som følger:
$ objXMLRPClientWordPress = ny XMLRPClientWordPress ("http: //localhost/wordpress31/xmlrpc.php", "admin", "abbas");
Og så ring:
$ ObjXMLRPClientWordPress-> sayHello ()
Utgangen av dette vil være som følger:
Hvis du får det samme resultatet, betyr det at du er i stand til å sende forespørselen riktig til din WordPress XML-RPC-server og motta forespørselen riktig.
Nå kan du utføre en litt mer komplisert operasjon ved hjelp av XML-RPC på WordPress-installasjonen.
La oss nå lage en funksjon som vil skape et innlegg på bloggen via XML-RPC.
Forespørselenavnet for å opprette et innlegg er metaWeblog.newPost
som egentlig er en del av MetaWeblog API som WordPress støtter.
Argumentene som kreves for denne forespørselen er
blogid
(som er 0 hvis du bare har en blogg på installasjonen din)brukernavn
passord
tittel
, innhold
, kategorier
etc.publisere
det vil si om å publisere innleggetFunksjonen create_post
er som følgende:
funksjon create_post ($ title, $ body, $ kategori, $ keywords = ", $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); $ søkeord = htmlentities ($ søkeord, ENT_NOQUOTES $ $ = array ('title' => $ title, 'description' => $ body, 'mt_allow_comments' => 0, // 1 for å tillate kommentarer 'mt_allow_pings' => 0, // 1 til Tillat trackbacks 'post_type' => 'post', 'mt_keywords' => $ søkeord, 'kategorier' => array ($ kategori)); $ params = array (0, $ this-> UserName, $ this-> PassWord, $ innhold, sant); returner $ this-> send_request ('metaWeblog.newPost', $ params);
Denne funksjonen tar tittelen, kroppen, kategoriene etc som inngangsargumenter. Deretter oppretter det en innholdsstruktur fra disse argumentene og angir noen standardverdier.
Deretter vil vi opprette en parametergruppe fra brukernavnet, passordet som tidligere ble passert i konstruktøren og fra innholdsarrangementet vi lagde fra inngangsparametrene.
Denne funksjonen kan kalles som følger.
$ objXMLRPClientWordPress-> create_post ('Hello WordPress XML-RPC', 'Dette er innholdet av innlegg gjort via XML-RPC', ");
Post-ID for det nyopprettede innlegget er verdien returnert av denne APIen. Hvis vi lager et bord fra API og skriver ut resultatene, ser det ut som følger.
Hvis vi går og ser WordPress-installasjonen, vises innlegget på det som følger
Nå skal vi lage en side på WordPress-installasjonen ved hjelp av XML-RPC. Forespørselen om å opprette en side er wp.newPage
som egentlig er en del av WordPress API.
Argumentene for dette er de samme som for opprettelsen av en postforespørsel.
Følgende er lag side
funksjon:
funksjon create_page ($ title, $ body, $ encoding = 'UTF-8') $ title = htmlentities ($ title, ENT_NOQUOTES, $ encoding); $ content = array ('title' => $ title, 'description' => $ body); $ params = array (0, $ this-> UserName, $ this-> PassWord, $ content, true); returnere $ this-> send_request ('wp.newPage', $ params);
Dette tar i utgangspunktet tittelen og kroppen som innganger og oppretter deretter parametrene som kreves for forespørselen, og sender deretter forespørselen.
Vi ringer funksjonen som følger
$ objXMLRPClientWordPress-> create_page ('WordPress XML-RPC-side', 'Dette er innholdet på første side ferdig via XML-RPC');
Og så ring:
$ ObjXMLRPClientWordPress-> sayHello ()
Avkastningen for denne forespørselen er sidens id på den nylig opprettede siden. Nå hvis vi kjører denne funksjonen og sjekker vår WordPress-installasjon, vil den nylig opprettede siden bli sett på følgende måte.
Nå skal vi opprette en funksjon for å få forfatterlisten fra WordPress-installasjonen via XML-RPC. Forespørselen om å få listen over forfattere er wp.getAuthors
som også er en del av WordPress API.
Parametrene for denne forespørselen er som følger:
blogid
(som er 0 hvis du bare har en blogg på installasjonen din)brukernavn
passord
Funksjonen display_authors
er som følgende:
funksjon display_authors () $ params = array (0, $ this-> UserName, $ this-> PassWord); returnere $ this-> send_request ('wp.getAuthors', $ params);
Det tar ingen parametere bare bruker det lagrede brukernavnet og passordet for å sende forespørselen. Utgangen av denne funksjonen er en streng om forfatterens detaljer for alle forfatterne på bloggen.
Vi kan ringe denne funksjonen som følger:
$ ObjXMLRPClientWordPress-> display_authors ();
Følgende er tabellen opprettet fra forespørselen og svaret til de forskjellige forespørslene i denne opplæringen.
Som de andre forespørslene diskuterte, støtter WordPress nesten alle viktige operasjoner man kan utføre på WordPress.
Det er forespørsler støttet for
Og mange flere støttes.
XML-RPC-støtte på WordPress gjør det mulig å skrive annen programvare eller skript som kan automatisere oppgaver på WordPress-installasjonen eller annen klientprogramvare for å utføre oppgaver eksternt.
Funksjoner som XML-RPC hjelper WordPress til å være en veldig åpen og utvidbar plattform. Så glad blogging med WordPress!
Har du en bestemt oppgave du liker å bruke XML-RPC for? Er det spesifikt programvare du liker å bruke med WordPress som bruker XML-RPC? Gi oss beskjed i kommentarene nedenfor!