Wordpress use rest Api post Articals


Wordpress use rest Api post Articals 用rest api 推送文章到wordpress

УСТАНОВКА

1# Установите плагин jwt

отсюда:

https://wordpress.org/plugins/jwt-authentication-for-wp-rest-api/

ps: минимальная версия php:7.4.0

PHP HTTP AUTHORIZATION HEADER ENABLE

1.1# .htaccess

изменить с —>

# SGS XMLRPC Disable Service
<Файлы xmlrpc.php
	запретить, разрешить
	запретить для всех
</Files>
# SGS XMLRPC Disable Service END


# BEGIN WordPress
<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_URI} !/(wp-content\/uploads/.*)$
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /index.php [L]
</IfModule>
# END WordPress

# SGO Unset Vary
  Заголовок не установлен Vary
# SGO Unset Vary END

to—->

# SGS XMLRPC Disable Service
<Файлы xmlrpc.php
	порядок: запретить, разрешить
	запретить для всех
</Files>
# SGS XMLRPC Disable Service END


# BEGIN WordPress
<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /
 RewriteRule ^index\.php$ - [L]
 RewriteCond %{REQUEST_URI} !/(wp-content\/uploads/.*)$
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{HTTP:Authorization} ^(.*)
 RewriteRule . /index.php [L]
 RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
 SetEnvIf Авторизация "(.*)" HTTP_AUTHORIZATION=$1
</IfModule>
# END WordPress

# SGO Unset Vary
  Заголовок не установлен Vary
# SGO Unset Vary END

НАСТРОЙКА СЕКРЕТНОГО КЛЮЧА

JWT требует секретного ключа для подписи токена. Этот секретный ключ должен быть уникальным и никогда не раскрываться. JWT需要一个秘钥来签署令牌,这个秘钥必须是唯一的且永不泄露。

Для добавления секретного ключа отредактируйте файл wp-config.php и добавьте новую константу JWT_AUTH_SECRET_KEY. 要添加密钥,请编辑您的wp-config.php文件,并添加一个名为JWT_AUTH_SECRET_KEY的新常量。

define('JWT_AUTH_SECRET_KEY', 'your-top-secret-key');

Вы можете использовать строку отсюда 你可以从这里使用一个字符串 https://api.wordpress.org/secret-key/1.1/salt/.

CONFIGURATE CORS SUPPORT 配置CORS支持

В плагине wp-api-jwt-auth появилась возможность активировать поддержку CORs. wp-api-jwt-auth插件有激活CORs支持的选项。

Чтобы включить поддержку CORs, отредактируйте файл wp-config.php и добавьте новую константу JWT_AUTH_CORS_ENABLE. 要启用CORs支持,请编辑您的wp-config.php文件并添加一个名为JWT_AUTH_CORS_ENABLE的新常量。

define('JWT_AUTH_CORS_ENABLE', true);

Использование

получить jwt-токен

разместить https://example.com/wp-json/jwt-auth/v1/token

данные:

 {"username": "[email protected]", "password": "xxxx" }

получим ответ следующим образом:

{
    "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczovL2dlbmcudG9kYXkiLCJpYXQiOjE2OTY5OTE0NjIsIm5iZiI6MTY5Njk5MTQ2MiwiZXhwIjoxNjk3NTk2MjYyLCJkYXRhIjp7InVzZXIiOnsiaWQiOiIxIn19fQ.VxdjEmKdqZShrHqzponvgHmHnp1HpkJaIgOqMj7G6Ggxxx",
    "user_email": "[email protected]",
    "user_nicename": "xxxgmail-com",
    "user_display_name": "[email protected]"
}

а затем добавьте заголовок запроса Authorization: Bearer

POST /resource HTTP/1.1
Хост: server.example.com
Авторизация: Bearer mF_s9.B5f-4.1JqM

и json-данные:

{
	"title": "44433x-Hello World",
	"status": "publish",
	"content": "aaa",
	"date": "2023-10-09T10:00:00"
}

ошибки

некоторая ошибка, с которой можно встретиться:

{
    "code": "rest_cannot_create",
    "message": "Извините, вам не разрешено создавать сообщения от имени этого пользователя",
    "data": {
        "status": 401
    }
}

необходимо добавить конфигурацию в .htaccess

 SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1