発生している問題・エラーメッセージ
wordpressで制作したサイトのurlを(http://o-sam.com/wp)から(http://o-sam.com)に変更した後、サイトの投稿や固定ページを追加や編集などを行おうとするとコンソールに以下のようなエラーが出て、投稿などは更新できません。
以前他のサイトやURLで同じようにやってもこんなことはなかったので困っています。
どなたかわかる方解決法とアドバイスをいただけると嬉しいです。
ここはURL変更前からChromeのコンソールで表示されているエラー、動作は問題ないのでスルーしていましたがこれも解決できればうれしいです。
custom-elements-es5-adapter.js:13 Uncaught TypeError: Cannot read property 'polyfillWrapFlushCallback' of null at custom-elements-es5-adapter.js:13 at custom-elements-es5-adapter.js:13 at custom-elements-es5-adapter.js:15
以下がURL変更後にコンソールに表示される主なエラーです。
GET http://o-sam.com/wp-json/wp/v2/taxonomies?per_page=100&context=edit&_locale=user 403 (Forbidden) Uncaught (in promise) Response?{type: "basic", url: "http://o-sam.com/wp-json/wp/v2/taxonomies?per_page=100&context=edit&_locale=user", redirected: false, status: 403, ok: false,?…} GET http://o-sam.com/wp-json/wp/v2/pages?per_page=100&exclude=323&parent_exclude=323&orderby=menu_order&order=asc&context=edit&_locale=user 403 (Forbidden) Uncaught (in promise) Response?{type: "basic", url: "http://o-sam.com/wp-json/wp/v2/pages?per_page=100&…by=menu_order&order=asc&context=edit&_locale=user", redirected: false, status: 403, ok: false,?…}
試したこと
wordpressのサイトurlの指定方法をhtaccessなどWAFの無効、PHPのバージョン変更など試しましたが変わりありませんでした。他のテーマに変更しても同じエラーが出るのでデータベース上のサイトURLの指定の問題なのかと思うのですが治し方が分かりません。
WordPress サイトの URL 変更を どの様な方法で実施されたのでしょうか?
「wordpress url 変更」などのキーワードで検索し、出てきた以下のような内容のことを行いました。
WordPress アドレスはノータッチです。
https://blog.zius.jp/wordpress/439/
wp-config.phpでdefine('WP_SITEURL','URL');というのもやってみましたが管理画面から行うのと変わりなくもとに戻しました。
Web サーバー側のログには何か出ていないでしょうか?
サーバーのログのチェック方法を知らないのですが、Wordpressのログをオンにしてみましたところ、以下のようなPHPでのエラーがでていました。simple-custom-post-orderというプラグインが悪いのでしょうか。
[12-May-2019 08:22:50 UTC] WordPress データベースエラー: Unknown column 'term_order' in 'field list' for query
SELECT count(*) as cnt, max(term_order) as max, min(term_order) as min
FROM wp7_terms AS terms
INNER JOIN wp7_term_taxonomy AS term_taxonomy ON ( terms.term_id = term_taxonomy.term_id )
WHERE term_taxonomy.taxonomy = 'category'
made by do_action('admin_init'), WP_Hook->do_action, WP_Hook->apply_filters, SCPO_Engine->refresh
[12-May-2019 08:22:50 UTC] PHP Notice: Undefined offset: 0 in /home/users/2/main.jp-btn/web/ow/wp/wp-content/plugins/simple-custom-post-order/simple-custom-post-order.php on line 254
[12-May-2019 08:22:50 UTC] PHP Notice: Trying to get property of non-object in /home/users/2/main.jp-btn/web/ow/wp/wp-content/plugins/simple-custom-post-order/simple-custom-post-order.php on line 254
[12-May-2019 08:22:50 UTC] WordPress データベースエラー: Unknown column 'term_order' in 'field list' for query
SELECT count(*) as cnt, max(term_order) as max, min(term_order) as min
FROM wp7_terms AS terms
INNER JOIN wp7_term_taxonomy AS term_taxonomy ON ( terms.term_id = term_taxonomy.term_id )
WHERE term_taxonomy.taxonomy = 'post_tag'
made by do_action('admin_init'), WP_Hook->do_action, WP_Hook->apply_filters, SCPO_Engine->refresh
wp-json で、403 エラーなので、アクセス拒否なんですよね。
たとえば、 .htaccess で、IPアドレスでのアクセス制限 や Basic 認証を実施されていたりしないでしょうか?
WAF は、無効にされたみたいですが、過去に WAF でアクセス拒否された設定が残っていたりしないでしょうか?
.htaccess ではRewriteBaseとRewriteRuleあたりしか触ったことはく、IPアドレスでのアクセス制限 や Basic 認証をした覚えはありません。
サーバーはロリポップのものですがWAFでアクセス拒否されたことも記憶になくWAFのログも特になにも検知していないみたいです。
回答とは言えないのでコメントにて失礼します。
/wpを取ったのにjsonのURLが/wpが挟まったまま(実際にアクセスするとエラー表示になります)なことから、パーマリンクの設定画面を開いてそのまま保存(リフレッシュ)または、Simple Custom Post Orderの設定画面でそのまま更新してみてはいかがでしょう??
jsonの取得エラーとSimple Custom Post Orderのデータベースエラーの関連性が不明なのでなんとも言えないところですので参考程度に・・・。
コメントありがとうございます。
パーマリンク設定画面でそのまま保存とSimpleCustom Post Orderのほうもそのまま更新しましたが、変化はありませんでした。。
To: momosiri さん
> /wpを取ったのにjsonのURLが/wpが挟まったまま
というのが、 ` /wp-json/wp/v2/taxonomies ` の /wp-json の次の ` /wp ` のことであれば、 WP REST API のエンドポイントの仕様( /wp-json/wp/v2/ は固定 )ですので URL は、問題ない(正しいエンドポイント)です。
https://ja.wp-api.org/ 参照
原因に興味を持ったので、テスト環境で、WordPress の URL 変更してみたり、いろいろ試してみましたがうちの環境( WordPress 5.1 + TwentyNineteen )では再現しないんですよね... テーマ依存のなにかがあるのか...
質問で、エラーと書かれていた WP REST API の URL を直接 Web ブラウザで開くと
> {"code":"rest_forbidden_context","message":"\u3053\u306e\u6295\u7a3f\u30bf\u30a4\u30d7\u306e\u6295\u7a3f\u3092\u7de8\u96c6\u3059\u308b\u6a29\u9650\u304c\u3042\u308a\u307e\u305b\u3093\u3002","data":{"status":401}}
と 401 の認証失敗が返ってきたので、403 が返ってくるのは、アクセス制限がかかっているということなのですが...
オリジナルテーマを使われていると思いますが、テーマの中で、パーマリンクの追加・書き換え・リダイレクトとかされていたりしますか?
原因究明をしてくださり感謝いたします。
パーマリンクの書き換え、リダイレクトらしきものはfunctions.phpに
function disable_redirect_canonical( $redirect_url ) {
if( is_404() ) {
return false;
}
return $redirect_url;
}
add_filter( 'redirect_canonical', 'disable_redirect_canonical' );
というのがありましたが、削除して試してみたのですが、変化なしでした。
もう少し他に無いか探してみます。
ふと思っている疑問なのですが、現在使用しているロリポップのサーバーアドレスはhttp://btn.main.jpでこの問題の起きているサイトのwordpressインストールディレクトリはhttp://btn.main.jp/ow/wp/にはいっていますが、ロリポップのドメイン設定でhttp://o-sam.com/を設定しロリポップユーザーページからWordpressインストールをしその時はインストールディレクトリをhttp://o-sam.com/wpとしたのが問題になったりするのでしょうか。