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.
Hitelesítés
Szekció neve “Hitelesítés”WordPress-sütikkel
Szekció neve “WordPress-sütikkel”Ezeket a fejléceket küldd a kéréssel:
X-WP-Nonce: a böngészőkonzolba írd be, hogywpApiSettings, és másold ki a nonce értékét.Cookie: a böngészőben az Application (Alkalmazás) lapon másold ki awordpress_logged_in_kezdetű süti nevét ÉS értékét.
Alkalmazásjelszóval
Szekció neve “Alkalmazásjelszóval”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).
Metaadatok írása: a kérés törzse
Szekció neve “Metaadatok írása: a kérés törzse”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).
Válaszok
Szekció neve “Válaszok”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 }}Bejegyzés-metaadatok lekérése
Szekció neve “Bejegyzés-metaadatok lekérése”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.
Tagmetaadatok lekérése
Szekció neve “Tagmetaadatok lekérése”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/" }}Bejegyzés-metaadatok küldése
Szekció neve “Bejegyzés-metaadatok küldése”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.
Biztonság és headless webhelyek
Szekció neve “Biztonság és headless webhelyek”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: nullvá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_*) ametamező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.
Átirányítás másik webhelyre
Szekció neve “Átirányítás másik webhelyre”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_hostsszű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 SEOPress beállításainak lekérése
Szekció neve “A SEOPress beállításainak lekérése”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ék1.per_page(nem kötelező): egész szám,1és100között, alapérték20.search(nem kötelező): szöveg, az URL egy része.source(nem kötelező):manualvagyauto.
/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.
Átirányítások lekérése
Szekció neve “Átirányítások lekérése”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,yesvagyno.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: