サポート » 使い方全般 » 記事のスラッグ名を自動的に記事IDにしたい

  • 解決済 wsmfp327

    (@wsmfp327)


    投稿記事の作成時にスラッグ名に自動的に記事IDを入力したいと思い、
    functions.php内に下記のコードを書きました。

    ———————————————————-
    function slug_change() {
    $postid = get_the_ID();
    return $postid;
    }

    add_filter (‘wp_unique_post_slug’,’slug_change’)
    ———————————————————-

    新規追加・編集から操作を行った場合、理想通りスラッグ名が記事IDと同じようになるのですが、
    クイック編集から編集した場合、記事IDを取得できていないようで、スラッグ名が空欄になってしまいます。

    あと、当然ながら固定ページも(おそらくカスタム投稿も)スラッグ名が記事IDと同じになってしまいます。
    固定ページはスラッグ名は任意の単語にしたいと思っています。

    知りたい事
    ・クイック編集の際の記事IDの取得の方法
    ・固定ページの編集時にはフィルター関数を発動させない方法

    宜しくお願い致します。

    もし可能ならば作成時のみ自動でスラッグ名を記事IDにして、編集時には記入したスラッグ名に変更できればベストです。

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • モデレーター jim912

    (@jim912)

    wsmfp327さん、こんにちは。

    こんなかんじでどうでしょう?

    function slug_change( $slug, $post_ID, $post_status, $post_type ) {
    	if ( $post_type != 'page' ) {
    		$slug = $post_ID;
    	}
    	return $slug;
    }
    add_filter ('wp_unique_post_slug','slug_change', 10, 4 );

    jim912様 ご回答ありがとうございます。

    コードを試しました所、ばっちりでした!!

    新規作成時・編集時・クイック編集時にはスラッグ名は記事IDになり、
    固定ページ作成時、編集時は指定のスラッグ名になりました。

    大変助かりました。
    ありがとうございました。

    こちらのスレッドを参考にjim912様のコードをfunction.phpに挿入したところ、固定・投稿・カスタム投稿タイプのプレビューが効かなくなってしまいました。add_filter (‘wp_unique_post_slug’,’slug_change’, 10, 4 );をコメントアウトするとプレビューができるようになるので、こちらのコードが関連しているようなのですが、考えられる原因はありませんでしょうか。

    よろしくお願いいたします。

    上記の問題は別のフックを使うことで自己解決しました。参考までにソースを添付します。

    //スラッグ名の自動変更
    function change_slug(){
    	global $post;
        if(get_post_type($post) != 'page')
    		{
          $post->post_name = $post->ID;
        }
    }
    add_action( 'admin_print_styles-post-new.php', 'change_slug', 1000 );

4件の返信を表示中 - 1 - 4件目 (全4件中)
  • トピック「記事のスラッグ名を自動的に記事IDにしたい」には新たに返信することはできません。