Wood-Roots:blogHOMEWordPress201407/30自動生成されるスラッグを自分好みに修正するWordPressWordPressのスラッグを自分で入力しない場合、記事タイトルがスラッグとして使用されます。この自動的に設定されるスラッグをもうちょっと好きなようにしたいと思い、修正する方法について調べてみました。ADs自動生成されるスラッグのルールスラッグは以下の様なルールで生成されます。・他の記事に同一スラッグがある場合、「-2」(-3、-4...)が付加される・記事タイトルをURLエンコードし、200文字以内に収まるように末尾を切り捨てるちなみに、このスラッグを生成する処理はwp_unique_post_slugという関数が行っていますので、詳しく知りたい場合はソースも参考にしてみてください。スラッグを短くしてみるURLの長さについて特に規定はありませんが、あまりに長すぎるURLは不都合が起きる可能性があります。ブログ運営においてははてブとページ名の長いWikiの、登録URLの長さ問題で指摘されているように、はてブされた際の問題が大きいかと思います。そこで、スラッグが200文字以下ではなくURLの長さが255文字以下になるようにスラッグを生成するアクションフックを書いてみました。アクションフック以下をfunctions.phpに記述します。$post->ID;wp_update_post($newpost);}}transition_post_statusは投稿の状態(公開、下書き、レビュー待ちなど)が変更されたタイミングで実行されるアクションフックです。記事投稿時に実行したい処理がある場合は、このtransition_post_statusを使うのが一番よさそうな感じです。_truncate_post_slugはスラッグを指定文字数に切り捨てる関数です。URLエンコード後の文字列を切り捨てる場合は変なところで切ると文字化けする恐れがありますが、そのあたりも考慮していい感じにやってくれます。ソースコードもご参照ください。$newpost[‘post_name’]という配列がスラッグを指定している部分ですので、今回のような文字数調整だけでなく、たとえばカテゴリ名称をスラッグに加えたり日付を加えたりなど、自分好みにいろいろできるかと思います。おまけ:英語のスラッグを翻訳APIを使って自動でつけてみるスラッグは英語にしたいけどいちいち英文を考えるのがめんどくさい、ということもあるかと思います。Translateというプラグインがあります。Translatorという翻訳APIを使うことで英文に翻訳し、スラッグに設定してくれます。APIをクラスライブラリを使って簡単に翻訳を行うも参考にしてみてください。コメントをキャンセルメールアドレスが公開されることはありません。コメント名前メールアドレスサイトCommentsコメントはまだありません。2Archive2020年92019年182018年102017年172016年202015年212014年312013年552012年50SearchSocialAboutWeb制作会社ではたらく社畜のアウトプットです。Web制作技術のほか、雑記など。当ブログと運営者についてもっと詳しく見るプライバシーポリシーContactお問い合わせは下記フォームをご利用ください。お時間がございましたらお問い合わせの前にこちらをご一読いただけますと幸いです。Wood-Roots:blog。