...
✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kuinka käyttää WordPress-sovellussalasanoja REST API -todennukseen

56

WordPress-kehittäjänä sinun on oltava tietoinen WordPressin REST-sovellusliittymästä. WordPress tarjoaa käyttöliittymän (REST API) vuorovaikutukseen WordPressin kanssa sovelluksestasi. Nämä sovellukset voivat olla mitä tahansa käyttöliittymässä, kuten React, Angular ja muut PHP-sovellukset.

Sovelluksesi ja WordPressin välinen vuorovaikutus kommunikoi HTTP-pyyntöjen kautta. Sinun on lähetettävä HTTP-pyyntö WordPress-päätepisteeseen. Ja sovellusten suojaamiseksi kaikkien näiden pyyntöjen tulisi olla peräisin voimassa olevista resursseista. Kukaan ei saa julkisesti soittaa WordPress-päätepisteeseen. API-puhelun suojaamiseksi WordPress hyväksyy ainutkertaisen tunnuksen valtuutusotsakkeeseen. WordPress vahvistaa tämän tunnuksen ja käsittelee pyynnön vastaavasti.

WordPress 5.6 esitteli uuden ominaisuuden ” Sovellussalasanat ”. Sen avulla voit periaatteessa luoda tunnuksen WordPress-hallintapaneelista, jota voidaan sitten käyttää valtuutusotsikossa.

Tässä artikkelissa tutkitaan, miten sovellussalasanoja käytetään WordPress REST -sovellusliittymän kanssa. Kirjoitamme REST-sovellusliittymän esimerkkikoodin kielillä cURL, Guzzle ja jQuery.

Luo sovellussalasanoja WordPressissä

WordPress 5.6 lisää oletusarvoisesti osan Sovelluksen salasana Käyttäjät-> Profiili -sivulle. Tämä ominaisuus on käytettävissä kaikilla SSL / HTTPS-palvelimella palvelevilla sivustoilla. Jos sivustosi ei ole HTTPS: ssä, voit ottaa tämän ominaisuuden käyttöön alla olevan suodattimen avulla.

add_filter( 'wp_is_application_passwords_available', '__return_true' );

Siirry Käyttäjät-> Profiili -sivulle ja luo salasana antamalla sovelluksen nimi. Tämän jälkeen WordPress tuottaa salasanan, jota voit käyttää käyttöliittymäsovelluksessa HTTP-pyyntöihin. Vaikka WordPress antaa sinulle salasanan, jossa on välilyöntejä, voit käyttää tätä salasanaa välilyönnillä tai ilman. WordPress nauhoittaa tilat niiden päässä.

Sinulla on sovelluksen salasana. Nyt sinun on luotava kelvollinen tunnus valtuutusotsakkeelle. Kelvollinen tunnus on yhdistelmä WordPress-sivuston käyttäjänimeäsi ja sovelluksen salasanaa base64-koodatussa muodossa. Käyttäjä voi luoda sen helposti seuraavasti.

<?php
$username = 'admin'; // site username
$application_password = 'Ho9c 9vGs AOBG nXb0 FPpr W5vO';
  
echo base64_encode($username.':'.$application_password);

Yllä olevassa koodissa välitin ‘admin’ käyttäjänimen ja oman sovelluksen salasanan. Säädä nämä arvot tunnistetietojesi mukaan. Lopuksi saat kelvollisen tunnuksen base64-koodatun version. Katsotaan nyt, kuinka kutsua WordPress REST -sovellusliittymää tällä tunnuksella.

Soitetaan WordPress REST -sovellusliittymään

WordPress antaa useita päätepisteitä, jotka vastaanottavat sovellusliittymän pyynnöt. Käy läpi WordPressin käytettävissä olevien päätepisteiden luettelo. Näiden käytettävissä olevien päätepisteiden lisäksi voit myös lisätä omia mukautettuja päätepisteitä WordPressiin.

Opetusohjelman vuoksi otan esimerkin viestin luomisen Viestit-päätepisteestä. Jos haluat luoda viestin WordPress-sovellukseen, sinun on lähetettävä POST-pyynnöt parametreillä tällä päätepisteellä SITE_URL/wp-json/wp/v2/posts.

Katsotaan nyt, kuinka kutsua tämä päätepiste käyttämällä cURL-, Guzzle- ja jQuery-sovelluksia. Hakemuksesi perusteella voit ottaa viitteen mistä tahansa alla olevista vaihtoehdoista.

WordPress REST -sovellusliittymä PHP cURL: ää käyttämällä

Voit rakentaa sovelluksesi PHP: ssä. Käyttäjä voi olla vuorovaikutuksessa WordPressin kanssa PHP-sovelluksestaan ​​käyttämällä cURL: ää ja Guzzlea. Jos kyseessä on cURL, varmista, että cURL-laajennus on käytössä palvelimellasi. Tämän jälkeen voit käyttää alla olevaa koodia, joka luo viestin WordPressiin.

<?php
$username = 'admin';
$application_password = 'MGOw EG9V 04xo sUZ0 60wo J2OG';
 
$url = 'SITE_URL/wp-json/wp/v2/posts';
  
$json = json_encode([
    'title' => 'Post using REST API',
    'content' => 'Post content using REST API',
    'status' => 'publish',
]);
 
try {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_USERPWD, $username.':'.$application_password);
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
    $result = curl_exec($ch);
    $status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    print_r(json_decode($result));
} catch(Exception $e) {
    echo $e->getMessage();
}

Muista korvata käyttäjänimen, sovelluksen salasanan ja SITE_URL: n arvot todellisilla arvoillasi. Suorita tämä koodi ja viestisi luodaan WordPress-hallintapaneeliin.

WordPress REST -sovellusliittymä, joka käyttää Guzzlea PHP: ssä

Guzzle on vaihtoehto cURL: lle. Se on PHP HTTP -asiakas, joka helpottaa HTTP-pyyntöjen lähettämistä ja on triviaali integroida REST-sovellusliittymiin. Asenna Guzzle-kirjasto komennolla:

composer require guzzlehttp/guzzle

Seuraavaksi koodisi, jolla luot viestin WordPress REST -sovellusliittymän ja Guzzlen avulla, on seuraava.

<?php
require_once "vendor/autoload.php";
  
use GuzzleHttpClient;
 
$username = 'admin';
$application_password = 'MGOw EG9V 04xo sUZ0 60wo J2OG';
 
try {
    $client = new Client([
        // Base URI is used with relative requests
        'base_uri' => 'SITE_URL',
    ]);
     
    $response = $client->request('POST', '/wp-json/wp/v2/posts', [
        'json' => [
            'title' => 'Post using REST API',
            'content' => 'Post content using REST API',
            'status' => 'publish',
        ],
        "headers" => [
            "Authorization" => "Basic ". base64_encode($username.':'.$application_password)
        ],
    ]);
 
    $body = $response->getBody();
    $arr_body = json_decode($body);
    print_r($arr_body);
} catch(Exception $e) {
    echo $e->getMessage();
}

Tässä käytän base64_encode()PHP: n toimintoa merkkijonon koodaamiseen. CURL: n tapauksessa meidän ei tarvinnut tehdä sitä nimenomaisesti. CURL koodaa merkkijonon yksinään.

WordPress REST -sovellusliittymä jQueryä käyttämällä

JQueryn suhteen annamme yleensä API-kutsun, kun tietty tapahtuma käynnistyy. Tämä tapahtuma voi olla mitä tahansa napsautusta, muutosta, latausta jne. En kirjoita mistään tapahtumasta. Sen sijaan kirjoitan koodin suoraan, jonka voit kääriä tapahtumiesi sisään.

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous"></script>
<script>
jQuery(function($) {
    var username = 'admin';
    var application_password = 'MGOw EG9V 04xo sUZ0 60wo J2OG';
    $.ajax({
        type: 'POST',
        url: 'SITE_URL/wp-json/wp/v2/posts',
        beforeSend: function(xhr) {
            token = btoa(username + ':' + application_password)
            xhr.setRequestHeader('Authorization', 'Basic ' + token);
        },
        data: {
            'title': 'Post using REST API',
            'content': 'Post content using REST API',
            'status': 'publish'
        },
        success:function(response) {
            console.log(response);
        }
    });
});
</script>

Yllä olevassa koodissa käytän menetelmää btoa. btoa()Menetelmä koodaa merkkijono pohja-64. Voit myös nähdä API-vastauksen selainkonsolissa.

Toivon, että saatat oppia käyttämään WordPress-sovelluksen salasanoja sovelluksesi kanssa. Haluaisin kuulla ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.

Aiheeseen liittyvät artikkelit

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja