WordPress

スラッグに「embed」を使う

WordPressのスラッグに「embed」が使えなかったのでどうにかしたかった、という話です。コンテンツの埋め込みのために投稿ページのURLの末尾に「/embed」を使用することがあるようで、予約語として使用できないようになっています。あんまり使わないので知りませんでした。

とあるHTML5のサイトで、HTML要素名をそのままスラッグにしたタグリファレンスのページを作っていたのですが、スラッグ「embed」が強制的に「embed-2」に変更されて気が付きました。

WordPressでは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でWordPressの記事を直接編集する

phpMyAdminで当該記事のデータを開いて、post_nameの値「embed-2」を「embed」へ変更します。

WordPressでembedというスラッグを使用することができた

投稿の編集フォームを確認すると、スラッグを無事に「embed」に変更することができています。パーマリンクにもちゃんと反映されているのですが、編集フォーム上では「embed-2」が自動入力されてしまっています。そのため管理画面で更新するとまたまたスラッグが「embed-2」に強制的に変更されてしまうので注意が必要です。

WordPressではembedというスラッグを指定すると自動で「-2」が付いてしまう。

これって、スラッグにembedを指定してしまうと支障を来すんでやっぱりコンテンツの埋め込み(embedショートコード)は無効にしたほうがいいみたいですね。とりあえず面倒なのでそのままにして気が向いたら対策してみます。