サポート » 使い方全般 » カテゴリースラッグを含めた投稿スラッグを自動設定

  • 解決済 developer

    (@6flat)


    投稿時に自動的にカテゴリースラッグを含めた投稿スラッグを設定したいと思い

    WordPress の投稿スラッグを自動的に生成する | Simple Colors

    を参考に次の様にしてみたのですが、wp_unique_post_slugのパラメータにカテゴリースラッグが無いからか、カテゴリースラッグが意図した通りに追加されません。
    カテゴリースラッグも含めた形にするにはどうしたら良いでしょうか?

    function auto_post_slug( $cats, $slug, $post_ID, $post_status, $post_type ) {
        if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ) {
    
            function cat_slugs() {
                foreach ( get_the_category() as $get_slug ) {
                    $output[] = $get_slug->slug . '-';
                }
                unset( $get_slug );
                if ( is_array( $output ) ) {
                    $post_slugs = implode( '', $output );
                }
                return $post_slugs;
            }
    
            $slug = cat_slugs() . utf8_uri_encode( $post_type ) . '-' . $post_ID;
        }
        return $slug;
    }
    add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4  );

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 developer

    (@6flat)

    自動保存やリビジョンを無効にした環境では新規投稿時にget_the_categoryでカテゴリー情報を取ろうとしても取れないので、投稿を公開する前に一度下書き保存をするという場当たり的な対応でとりあえずカテゴリースラッグを入れる事は出来ました。

    ただ、公開後に投稿のパーマリンクの編集から投稿スラッグを空にするなどした時にはカテゴリースラッグが何故か入らず{post_type}-{post_ID}となってしまいました。
    しかし、そのまま更新すると更新後にカテゴリースラッグがちゃんと入っていて、そこだけ何だかよく分からないままです。

    意図した通りの結果ではありませんが、とりあえず解決とします。

    function auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
        function cat_slugs() {
            foreach ( get_the_category() as $get_slug ) {
                $output[] = $get_slug -> slug . '-';
            }
            unset( $get_slug );
            if ( is_array( $output ) ) {
                $cat_slugs = implode( '', $output );
            }
            return $cat_slugs;
        }
        if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) && $post_type == 'post' ) {
            $slug = cat_slugs() . utf8_uri_encode( $post_type ) . '-' . $post_ID;
        }
        return $slug;
    }
    add_filter('wp_unique_post_slug', 'auto_post_slug', 10, 4 );

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「カテゴリースラッグを含めた投稿スラッグを自動設定」には新たに返信することはできません。