XML-RPC i WordPress

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.


Trinn 1 Forstå XML-RPC i WordPress

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.


Trinn 2 Aktiverer XML-RPC-støtte på deg WordPress-installasjon

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.


Trinn 3 Kjenne filer og klasser i WordPress som gjør XML-RPC mulig

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.


Trinn 4 Å vite forskjellige typer APIer støttet av WordPress XML-RPC Server

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:

  • WordPress API
  • Blogger API
  • MetaWeblog API
  • MovableType API
  • PingBack API

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

Trinn 5 Opprette XMLRPClientWordPress Klasse i PHP

Nå 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.


Trinn 6 Sende den første Si hei XML-RPC-forespørsel til din WordPress-installasjon

For å 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.


Trinn 7 Opprette en innlegg i bloggen din ved hjelp av XML-RPC

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
  • Innholdsstruktur av posten, dvs. forskjellig informasjon om innlegget som tittel, innhold, kategorier etc.
  • publisere det vil si om å publisere innlegget

Funksjonen 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


Trinn 8 Opprette en side din blogg ved hjelp av XML-RPC

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.


Trinn 9 Få listen over forfattere av en blogg ved hjelp av XML-RPC

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.


Trinn 10 Å vite om noen annen viktig operasjon Støttet av WordPress XML-RPC

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

  • Opprette, redigere, slette sider og innlegg
  • Opprette, redigere, slette kommentarer
  • Oppføring av forfattere og bloggdetaljer
  • For å få nye innlegg og liste over kategorier

Og mange flere støttes.


Konklusjon

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!