Tovább a tartalomhoz

REST API: hitelesítés, olvasás, írás és biztonság

A SEOPress REST API alapjai: hitelesítési módok, bejegyzés- és tagmetaadatok olvasása és írása, beállítások lekérése, és a nyilvános útvonalak biztonsági szabályai.

A SEOPress a WordPress REST API-ján keresztül is elérhető. Ez a fejezet a hitelesítést, a bejegyzések és tagok SEO-metaadatainak olvasását és írását, a globális beállítások lekérését, az Instant Indexing előzményét és az átirányítások lekérését írja le. A többi útvonal (séma, videótérkép, AI, tartalomelemzés, analitika, Insights) a REST API: további útvonalak fejezetben van.

Minden útvonal a /wp-json/seopress/v1/ alatt érhető el.

Ezeket a fejléceket küldd a kéréssel:

  • X-WP-Nonce: a böngészőkonzolba írd be, hogy wpApiSettings, és másold ki a nonce értékét.
  • Cookie: a böngészőben az Application (Alkalmazás) lapon másold ki a wordpress_logged_in_ kezdetű süti nevét ÉS értékét.

Ez az ajánlott megoldás. Hozz létre alkalmazásjelszót a WordPress-profilodon, majd a WordPress-felhasználóneveddel és ezzel az új jelszóval hitelesíts (Postmanben vagy hasonló eszközben válaszd az „alap hitelesítést”, Basic Authentication).

Az alábbi JSON-objektumokat küldd a kérés törzseként, az útvonaltól függően.

Cím és meta leírás:

{
"title": "Ez a SEO-cím",
"description": "Ez a meta leírás"
}

Fókuszkulcsszavak:

{
"_seopress_analysis_target_kw": "kulcsszo1, kulcsszo2"
}

Közösségi metaadatok:

{
"_seopress_social_fb_title": "Facebook-cím",
"_seopress_social_fb_desc": "Facebook-leírás",
"_seopress_social_fb_img": "a Facebook-kép URL-je",
"_seopress_social_fb_img_attachment_id": "a Facebook-kép mellékletazonosítója",
"_seopress_social_fb_img_width": "a Facebook-kép szélessége",
"_seopress_social_fb_img_height": "a Facebook-kép magassága",
"_seopress_social_twitter_title": "X-cím",
"_seopress_social_twitter_desc": "X-leírás",
"_seopress_social_twitter_img": "az X-kép URL-je",
"_seopress_social_twitter_img_attachment_id": "az X-kép mellékletazonosítója",
"_seopress_social_twitter_img_width": "az X-kép szélessége",
"_seopress_social_twitter_img_height": "az X-kép magassága"
}

Meta robots:

{
"_seopress_robots_index": "yes",
"_seopress_robots_follow": "yes",
"_seopress_robots_archive": "yes",
"_seopress_robots_snippet": "yes",
"_seopress_robots_imageindex": "yes",
"_seopress_robots_canonical": "az egyedi canonical URL",
"_seopress_robots_primary_cat": "az elsődleges kategória azonosítója",
"_seopress_robots_breadcrumbs": "egyedi navigációs morzsa"
}

Más nyilvános, hierarchikus taxonómia elsődleges tagjának saját kulcsa van: _seopress_robots_primary_term_{taxonomy} (például _seopress_robots_primary_term_genre). Tag-azonosítót vár, vagy üres értéket az eltávolításhoz. A kategóriáknál és a termékkategóriáknál továbbra is a _seopress_robots_primary_cat a kulcs.

Átirányítás:

{
"_seopress_redirections_enabled": "yes",
"_seopress_redirections_logged_status": "both|only_logged_in|only_not_logged_in",
"_seopress_redirections_type": "301|302|307",
"_seopress_redirections_value": "az átirányítás URL-je"
}

Egy másik webhelyre mutató átirányítást csak manage_options vagy unfiltered_html jogosultságú felhasználó állíthat be (lásd lejjebb a biztonsági részt).

Siker esetén:

{
"code": "success"
}

Hiba esetén:

{
"code": "rest_forbidden",
"message": "Sorry, you are not allowed to do that.",
"data": {
"status": 401
}
}

vagy:

{
"code": "rest_cookie_invalid_nonce",
"message": "Cookie check failed",
"data": {
"status": 403
}
}

vagy ha az átirányítás célját elutasítja a rendszer:

{
"code": "seopress_redirection_external_target",
"message": "You are not allowed to redirect this content to another website. Use a URL on this site, or ask an administrator.",
"data": {
"status": 403
}
}

Két útvonal van, mindkettő nyilvános, azaz nem kér hitelesítést, és az edit_post jogosultság sem kell hozzá:

  • /wp-json/seopress/v1/posts/[postId]: a [postId] helyére a bejegyzés azonosítója kerül.
  • /wp-json/seopress/v1/posts/by-url?url=https://example.com/peldabejegyzes/: az URL helyére a kívánt permalink kerül.

Metódus: GET. A metaadatot csak olyan tartalomtípus közzétett bejegyzéséhez adja vissza, amelyet a látogatók megtekinthetnek, és amelyet nem véd jelszó.

Ha van metaadat, a válaszban success: true áll, a metaadat a data objektumban. Különben a data értéke null. Az alábbi JSON csak a data objektumot mutatja, a címet például a response.data.title útvonalon olvasod ki.

{
"title": "SEOPress, a WordPress SEO-bővítmény",
"description": "A meta leírás",
"canonical": "https://example.com/peldabejegyzes/",
"og": {
"title": "Facebook-cím",
"description": "Facebook-leírás",
"image": "https://example.com/peldabejegyzes.jpg",
"attachment_id": "1",
"image_width": "1920",
"image_height": "1080"
},
"twitter": {
"title": "X-cím",
"description": "X-leírás",
"image": "https://example.com/peldabejegyzes.jpg",
"attachment_id": "1",
"image_width": "1920",
"image_height": "1080"
},
"robots": {
"noindex": false,
"nofollow": false,
"nosnippet": false,
"noimageindex": false
},
"primarycat": "1",
"breadcrumbs": "egyedi navigációs morzsa az aktuális elemhez",
"redirections": {
"enabled": true,
"status": "both",
"type": "301",
"value": "https://example.com/celoldal/"
}
}

Az adatok lekéréséhez használhatod például a WordPress HTTP API-ját.

A taxonómiatagok SEO-metaadatait is lekérheted. Az útvonal nyilvános, a taxonomy paraméterrel és anélkül is, hitelesítés és edit_post jogosultság nélkül. Csak nyilvánosan lekérdezhető taxonómia tagját írja le, és a tagnak abba a taxonómiába kell tartoznia, amelyet kérsz. WooCommerce-termékkategóriánál például fűzd hozzá: ?taxonomy=product_cat.

  • /wp-json/seopress/v1/terms/[termId]: a [termId] helyére a tag azonosítója kerül.
  • /wp-json/seopress/v1/terms/[termId]?taxonomy=[sajatTaxonomia]: ugyanaz, taxonómia-megadással (alapértelmezés megadás nélkül: category).

Metódus: GET. A válasz szerkezete a bejegyzésekéhez hasonló (success: true, a metaadat a data objektumban; elérhető metaadat híján a data értéke null), a bejegyzéseknél látott primarycat nélkül:

{
"title": "A tag címe",
"description": "A tag meta leírása",
"canonical": "https://example.com/kategoria/peldakategoria/",
"og": {
"title": "Facebook-cím",
"description": "Facebook-leírás",
"image": "https://example.com/kategoria.jpg",
"attachment_id": "1",
"image_width": "1920",
"image_height": "1080"
},
"twitter": {
"title": "X-cím",
"description": "X-leírás",
"image": "https://example.com/kategoria.jpg",
"attachment_id": "1",
"image_width": "1920",
"image_height": "1080"
},
"robots": {
"noindex": false,
"nofollow": false,
"nosnippet": false,
"noimageindex": false
},
"breadcrumbs": "egyedi navigációs morzsa az aktuális elemhez",
"redirections": {
"enabled": true,
"status": "both",
"type": "301",
"value": "https://example.com/celoldal/"
}
}

Az SEO-metaadatok írására ezek az útvonalak szolgálnak:

Mit írsz Útvonal
Cím és meta leírás /wp-json/seopress/v1/posts/[postId]/title-description-metas
Fókuszkulcsszavak /wp-json/seopress/v1/posts/[postId]/target-keywords
Közösségi metaadatok /wp-json/seopress/v1/posts/[postId]/social-settings
Meta robots /wp-json/seopress/v1/posts/[postId]/meta-robot-settings
Átirányítás /wp-json/seopress/v1/posts/[postId]/redirection-settings

Szükséges jogosultság: edit_post. Metódus: PUT.

Az a szerepkör, amelyet a SEO → Advanced → Security fülön letiltottál, nem használhatja ezeket az útvonalakat, ahogyan a SEO metaboxot sem: a SEO metaboxes: blocked roles beállítás mindegyikre vonatkozik, a Content Analysis: blocked roles a fókuszkulcsszavakra. Ugyanez a korlátozás az útvonalak GET-es olvasására is érvényes, és az átirányítás célját is ellenőrzi a rendszer.

A REST API korlátozza, mit lát a látogató, és mit módosíthat az egyes szerepkör. Ha headless előtétet futtatsz, vagy olyan integrációt, amely SEO-adatot olvas vagy ír, nézd át az alábbi pontokat.

A nyilvános útvonalak csak nyilvános tartalmat írnak le

Szekció neve “A nyilvános útvonalak csak nyilvános tartalmat írnak le”

A seopress/v1/posts/[postId], a seopress/v1/posts/by-url és a seopress/v1/terms/[termId] útvonal bárki számára nyitott, de csak olyan tartalmat ír le, amelyet a látogató amúgy is elérhet:

  • megtekinthető tartalomtípus bejegyzéseit (bejegyzések, oldalak, termékek, nyilvános egyedi tartalomtípusok). Az újrafelhasználható blokkok, a sablonrészek és más bővítmények belső rekordjai data: null választ adnak, akkor is, ha közzétettek;
  • nyilvánosan lekérdezhető taxonómia tagjait, és csak akkor, ha a tag létezik a kért taxonómiában.

Ha szándékosan akarsz elérhetővé tenni egy belső tartalomtípust vagy taxonómiát (például egy integrációnak, amely a korábbi viselkedésre épített), használd ezeket a szűrőket. A piszkozatok és a jelszóval védett bejegyzések a szűrő értékétől függetlenül rejtve maradnak.

// Egy belső tartalomtípus bejegyzéseinek leírása a nyilvános SEO-útvonalon.
add_filter( 'seopress_api_public_post_is_readable', function( $allowed, $post_id, $post_type ) {
if ( 'my_internal_type' === $post_type ) {
return true;
}
return $allowed;
}, 10, 3 );
// Egy nem nyilvános taxonómia tagjainak leírása a nyilvános SEO-útvonalon.
add_filter( 'seopress_api_public_term_is_readable', function( $allowed, $term_id, $taxonomy ) {
if ( 'my_internal_taxonomy' === $taxonomy && term_exists( $term_id, $taxonomy ) ) {
return true;
}
return $allowed;
}, 10, 3 );

SEO-metaadatok a WordPress alap útvonalain (/wp/v2)

Szekció neve “SEO-metaadatok a WordPress alap útvonalain (/wp/v2)”

A SEOPress a bejegyzés-metaadatait a WordPress alap REST-útvonalain (/wp/v2/posts, /wp/v2/pages stb.) is regisztrálja, hogy a blokkszerkesztő olvasni és menteni tudja őket. Jelenleg:

  • aki nem szerkesztheti a bejegyzést (a látogatókat is beleértve), nem kap SEOPress-metaadatot (_seopress_*) a meta mezőben. Alapból egyetlen kulcs sem marad nyilvános;
  • aki szerkesztheti a bejegyzést, megkapja őket, kivéve azoknak a területeknek a kulcsait, amelyektől a szerepkörét a SEO → Advanced → Security fülön letiltották (például a fókuszkulcsszavakat egy, a Content Analysis: blocked roles listán szereplő szerepkörnek).

Headless előtéthez az ajánlott forrás a seopress/v1/posts/[postId] útvonal: a megjelenítéskor érvényes értékeket adja vissza. Ha az előtéted a nyers metaadatokat a /wp/v2 útvonalról olvassa, a nyilvánosan maradó kulcsokat a seopress_rest_public_meta_keys szűrővel add meg:

// A SEO-cím és a meta leírás maradjon nyilvános a /wp/v2 válaszokban.
add_filter( 'seopress_rest_public_meta_keys', function( $keys, $post ) {
$keys[] = '_seopress_titles_title';
$keys[] = '_seopress_titles_desc';
return $keys;
}, 10, 2 );

Csak azokat a kulcsokat add meg, amelyekre az előtétnek szüksége van: a fókuszkulcsszavak, a ki nem kapcsolt átirányítás és a tartalomelemzés beállításai nem arra valók, hogy nyilvánosak legyenek.

Aki szerkeszthet egy bejegyzést, annak az átirányítását is bekapcsolhatja. A bejegyzés- vagy tagátirányítás célja a saját webhelyeden kell legyen, kivéve ha a felhasználó manage_options vagy unfiltered_html jogosultságú. Ez megakadályozza, hogy valaki a te URL-edből tetszőleges domainre mutató hivatkozást (nyílt átirányítást) csináljon.

  • A saját webhelyed vagy a WordPress allowed_redirect_hosts szűrőjével felvett gazdagép mindig elfogadott.
  • A már mentett cél megtartása elfogadott, így egy szerző akkor is frissíthet egy bejegyzést, ha azt egy adminisztrátor átirányította.
  • Ha nincs bejelentkezett felhasználó (cron, WP-CLI, importálás), semmit nem ellenőriz.
  • A SEOPress PRO átirányításkezelőjét nem érinti: annak saját jogosultságai vannak.

A szabály a bejegyzés- és tagátirányítások minden mentési módjára vonatkozik, a REST API-ra is. A PUT /wp-json/seopress/v1/posts/[postId]/redirection-settings hívásnál az elutasított cél seopress_redirection_external_target hibát ad (HTTP 403), és semmi nem mentődik. A /wp/v2 útvonalon át a korábbi cél csendben megmarad. Ha több felhasználónak akarod engedélyezni a másik webhelyre irányítást, használd a seopress_redirection_external_target_allowed szűrőt:

// A shop aldomain elfogadott átirányítási cél minden felhasználónak, aki szerkesztheti a bejegyzést.
add_filter( 'seopress_redirection_external_target_allowed', function( $allowed, $url ) {
if ( 'shop.example.com' === wp_parse_url( $url, PHP_URL_HOST ) ) {
return true;
}
return $allowed;
}, 10, 2 );

A SEO metabox korlátozásai az olvasó útvonalakon

Szekció neve “A SEO metabox korlátozásai az olvasó útvonalakon”

A SEO metabox író útvonalait a SEO → Advanced → Security fülön megjelölt szerepkörtől eleve megtagadja a rendszer. Az olvasó (GET) útvonalakra ugyanez a szabály érvényes, így a letiltott szerepkör nem kérheti le azokat a mezőket, amelyeket a metabox elrejt előle. Az adminisztrátorokat soha nem blokkolja.

Útvonal Megtagadva, ha a szerepkör ki van jelölve itt
title-description-metas, target-keywords, meta-robot-settings, preview-title-description-metas, page-preview, count-target-keywords-use mindkét listán: SEO metaboxes: blocked roles és Content Analysis: blocked roles
social-settings, redirection-settings, redirection-test SEO metaboxes: blocked roles
content-analysis (GET) és content-analysis/analyze (POST) Content Analysis: blocked roles

Mindegyik útvonal a /wp-json/seopress/v1/posts/[postId]/ alatt van, és továbbra is edit_post jogosultságot kér. A SEO-beállításokat módosító SEOPress képességek (Abilities) ugyanezeket a szerepkörkorlátozásokat alkalmazzák (az olvasás ott engedélyezett maradt), lásd a SEOPress képességek fejezetet.

A globális beállításokat is lekérheted. Biztonsági okból olyan felhasználóval kell bejelentkezned, aki manage_options jogosultságú.

Tíz útvonal van, mind GET metódussal:

Útvonal Beállítások
/wp-json/seopress/v1/options/dashboard-settings Vezérlőpult
/wp-json/seopress/v1/options/titles-settings Címek és metaadatok
/wp-json/seopress/v1/options/social-settings Közösségi hálózatok
/wp-json/seopress/v1/options/sitemaps-settings Oldaltérképek
/wp-json/seopress/v1/options/analytics-settings Analitika
/wp-json/seopress/v1/options/advanced-settings Haladó beállítások
/wp-json/seopress/v1/options/bot-settings Botbeállítások
/wp-json/seopress/v1/options/indexing-settings Instant Indexing
/wp-json/seopress/v1/options/license-settings Licenc
/wp-json/seopress/v1/options/pro-settings PRO-beállítások

A válasz JSON, például a vezérlőpult-beállításoknál:

{
"cards_order": [
"seopress-page-list",
"notice-insights-alert",
"seopress-news-panel"
],
"toggle-rich-snippets": "1",
"toggle-404": "1",
"toggle-bot": "1",
"toggle-titles": "1",
"toggle-white-label": "0",
"toggle-social": "1",
"toggle-xml-sitemap": "1",
"toggle-google-analytics": "1",
"toggle-advanced": "1",
"toggle-woocommerce": "1",
"toggle-edd": "1",
"toggle-local-business": "1",
"toggle-dublin-core": "1",
"toggle-breadcrumbs": "1",
"toggle-robots": "1",
"toggle-news": "1",
"toggle-rewrite": "1",
"toggle-instant-indexing": "1",
"notice-wizard": "1"
}

Az Instant Indexing előzményének lekérése

Szekció neve “Az Instant Indexing előzményének lekérése”

Minden IndexNow-nak vagy a Google-nek beküldött URL rögzítődik az előzményben (lásd az Azonnali indexelés fejezetet), és ezt a REST API-val is lekérheted. Biztonsági okból manage_options jogosultságú felhasználóval kell bejelentkezned, kivéve a bejegyzésenkénti útvonalat (ott edit_post kell).

Két útvonal van:

  • /wp-json/seopress/v1/instant-indexing/history: a teljes előzmény, a legújabbal kezdve. Argumentumok:
    • page (nem kötelező): egész szám, alapérték 1.
    • per_page (nem kötelező): egész szám, 1 és 100 között, alapérték 20.
    • search (nem kötelező): szöveg, az URL egy része.
    • source (nem kötelező): manual vagy auto.
  • /wp-json/seopress/v1/posts/[postId]/indexing-history: a bejegyzés utolsó 20 beküldése.

Metódus: GET, és DELETE az /instant-indexing/history útvonalon az egész előzmény törléséhez.

{
"items": [
{
"id": 42,
"url": "https://example.com/peldabejegyzes/",
"post_id": 123,
"engine": "indexnow",
"source": "auto",
"status_code": 200,
"success": true,
"message": "",
"date_gmt": "2026-10-28T09:15:00+00:00",
"date": "October 28, 2026 9:15 am"
}
],
"total": 1,
"total_pages": 1,
"max_rows": 5000
}

Az engine értéke indexnow vagy google. A bejegyzésenkénti útvonal az items mellett az automatic mezőt (be van-e kapcsolva az automatikus beküldés) és a history_url mezőt (az előzmények fülének linkje, üres annak, aki nem nyithatja meg) is visszaadja. Alapból az 5000 legújabb sor marad meg, URL-enként és keresőmotoronként egy sor. A számot a seopress_instant_indexing_history_max_rows szűrővel módosíthatod, a 0 leállítja a rögzítést.

Az átirányításokat is lekérheted. Biztonsági okból read_redirection jogosultságú felhasználóval kell bejelentkezned.

Egy útvonal van: /wp-json/seopress/v1/redirections, az összes átirányítás lekéréséhez. Argumentumok:

  • id (nem kötelező): egész szám, az átirányítás azonosítója.
  • enabled (nem kötelező): szöveg, yes vagy no.
  • type (nem kötelező): az átirányítás típusainak tömbje: 301, 302, 307, 404, 410, 451.

Metódus: GET.

{
"success": true,
"data": {
"1681": {
"origin": "regi-url",
"destination": "https://example.com/uj-url",
"enabled": "yes",
"type": "301",
"param": "",
"enabled_regex": "",
"logged_status": "",
"ip": "",
"ua": "",
"full_origin": "",
"date_request": "",
"count": "14",
"redirect_date_request": "1747125367"
}
}
}

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások