前提・実現したいこと
Wordpressで自作テーマを作っております。
各記事のURLの末尾を最初の投稿を1として、投稿順に2,3,...と連番にしていく方法を考慮しています。
末尾を数字のみにするのはあまりよくないという話も聞いたのですがSEOに気を遣うサイトを作りたいわけでもないので単純なこだわりです。
発生している問題・エラーメッセージ
パーマリンク設定を/%post_name%としている前提でお願いします。
現状では記事投稿の際にパーマリンクを"投稿時点の記事数+1"として設定することでURLの末尾を/(記事ナンバー)としています。
しかし現状のコードでは記事の更新時にもスラッグが再設定されてしまい更新時の記事数+1という数字が末尾に来てしまいます。
プラグインで強制的に直すこともできますがいちいち直すのは面倒です。
結論としては、新規投稿時、下書きから投稿時はスラッグを記事数+1に設定、更新時は以前のスラッグ・パーマリンクを維持というシステムを作りたいです。
該当のソースコード
function.php
php
1function auto_post_slug( $slug, $post_ID, $post_status, $post_type ) { 2 $postcount = wp_count_posts(); 3 $posts = $postcount->publish; 4 $newslug = $posts + 1; 5 return $newslug; 6} 7add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4 );
試したこと
if(empty($slug))や、if(post_status == 'publish')ではうまくいってないのでそもそも新規投稿のエディターと更新時のエディターの違いや、どの時点でスラッグが生成されるかなど自分で把握できていないと思います。
phpも基礎しか浚えてないのですみません。
http://nyanto.net/2012/12/entry-5.htmlなどで紹介されているmeta-boxes.php内のpost_slug_meta_box( $post )の書き換えは一通り試しましたがうまくいきませんでした。
加えて、数字の後に"-2"などとついてしまうのも避けたいです。
上記の書き方にこだわっているわけではないので、解決案の思いつく方がいらっしゃればご教授願いたいです。
補足情報(FW/ツールのバージョンなど)
wordpress 5.2.4
あなたの回答
tips
プレビュー