お世話になっております。
WordPress記事をAPI経由で投稿する運用について確認させてください。
現在、独自スクリプトからWordPress REST APIで記事の新規投稿・更新を行っています。
このとき、XWrite特有の以下SEO項目をAPIから設定可能か確認したいです。
1. タイトルタグ(検索結果向けのtitle。記事タイトルとは別管理の項目)
2. メタディスクリプション
確認したい内容:
- API経由で上記2項目を設定できますか?
- 可能な場合、対象エンドポイントとパラメータ名(またはmeta key)を教えてください。
- 参考になる公式ドキュメントURLがあればご共有ください。
想定している運用:
- WordPress REST APIで投稿
- 記事本文・スラッグはAPIで反映済み
- これに加えて、XWrite固有のタイトルタグ/メタディスクリプションも同時に設定したい
よろしくお願いいたします。
@ojichiku さま
ご質問いただきましてありがとうございます。
API経由で上記2項目を設定できますか?
恐れ入りますが、標準機能のままではAPIからの設定には対応しておりません。
しかしながら、functions.phpやプラグインのスニペットにコードを
追記するカスタマイズを行っていただくことで設定が可能となります。
なお、functions.phpやスニペットの編集で記述に誤りがあると
サイトが正常に表示されなくなる可能性がありますので
編集前にバックアップを作成されることをおすすめいたします。
下記にコード例を提示します。(▶をクリックすると開きます)
コード例
<?php
// 投稿とページの両方に対応
foreach (array('post', 'page') as $post_type) {
register_post_meta($post_type, 'xw_meta_title', array(
'show_in_rest' =--> true,
'single' => true,
'type' => 'string',
'sanitize_callback' => 'sanitize_text_field',
'auth_callback' => function($allowed, $meta_key, $object_id) {
return current_user_can('edit_post', $object_id);
}
));
register_post_meta($post_type, 'xw_meta_description', array(
'show_in_rest' => true,
'single' => true,
'type' => 'string',
'sanitize_callback' => 'sanitize_textarea_field',
'auth_callback' => function($allowed, $meta_key, $object_id) {
return current_user_can('edit_post', $object_id);
}
));
}
?>
可能な場合、対象エンドポイントとパラメータ名(またはmeta key)を教えてください。
対象となるエンドポイントとパラメータは以下の通りです。
エンドポイント(投稿の場合): /wp-json/wp/v2/posts/{投稿ID}
(通常の投稿更新と同じです)
パラメータ(meta key)
・タイトルタグ: xw_meta_title
・メタディスクリプション: xw_meta_description
■ 実行例(curlコマンドの場合)
動作確認の一例として、wp-cliでアプリケーションパスワードを発行し、
curlコマンドでリクエストを行う際の手順をご案内いたします。
なお、あくまで動作確認であり、本番運用する場合は
レート制限やIP制限などを追加することも検討していただいた方が
より安全にご使用いただけると思います。
ご自身の環境に合わせてカスタマイズいただくよう
お願いいたします。
1.アプリケーションパスワードを生成
wp user application-password create admin rest-api-test
2.出力したパスワード(xxxx-xxxx-xxxx-xxxx)を用いて更新を行う
※XXXXXには編集対象にしたい「投稿」のIDが入ります。
curl -X POST http://サイト名:ポート番号/wp-json/wp/v2/posts/XXXXX \
-u "admin:xxxx-xxxx-xxxx-xxxx" \
-H "Content-Type: application/json" \
-d '{"meta":{"xw_meta_title":"test"}}'
参考になる公式ドキュメントURLがあればご共有ください。
誠に恐縮ながら、Xwriteの公式ドキュメント等のご用意はございません。
WordPress公式の参考になるドキュメントとしては下記のとおりです。
・WordPress REST API公式ドキュメント
・register_post_meta()
少しでもojichikuさまのお役に立てれば幸いです。
本件につきまして、その他にご不明な点がございましたらお気軽にお問い合わせください。
よろしくお願いいたします。