WordPressのスラッグに「embed」が使えなかったのでどうにかしたかった、という話です。コンテンツの埋め込みのために投稿ページのURLの末尾に「/embed」を使用することがあるようで、予約語として使用できないようになっています。あんまり使わないので知りませんでした。
とあるHTML5のサイトで、HTML要素名をそのままスラッグにしたタグリファレンスのページを作っていたのですが、スラッグ「embed」が強制的に「embed-2」に変更されて気が付きました。
ついでに、このHTML5のサイトはまだアクセスがほぼない雑魚サイトですが、まだ作成途中だし自分のための覚え書きだし、ってこの場を借りて言い訳をしておきます。
理由はどうあれ、WordPressの都合でURLに制約があるのは納得いかないので意地でも使ったろうと思ってググったんですがイマイチ手応えがありません。WordPressに関してはいつも「ググれば解決!」ぐらいのノリでいるんですが、今回は海外のサポートぐらいしか参考になりそうなページを見つけることができませんでした。どうやら需要が無さそうです。
Pre-existing page with slug _embed_ does not work as described – WordPress Trac
Topic_ Disable post slug change « WordPress.org Forums
英語できないんで適当ですが、サポートフォーラムでは
「embedショートコードを無効にするプラグイン入れてもスラッグの予約語『embed』は生きてるのね」
っていうトピックに対してプラグイン作者から
「リポートありがとう!データベースで直せるよ、イェイ!」
て答えしか付いていなかったのでこの方法を参考にさせていただきました。
phpMyAdminで当該記事のデータを開いて、post_name
の値「embed-2」を「embed」へ変更します。
投稿の編集フォームを確認すると、スラッグを無事に「embed」に変更することができています。パーマリンクにもちゃんと反映されているのですが、編集フォーム上では「embed-2」が自動入力されてしまっています。そのため管理画面で更新するとまたまたスラッグが「embed-2」に強制的に変更されてしまうので注意が必要です。
これって、スラッグにembedを指定してしまうと支障を来すんでやっぱりコンテンツの埋め込み(embedショートコード)は無効にしたほうがいいみたいですね。とりあえず面倒なのでそのままにして気が向いたら対策してみます。