サポート » 使い方全般 » 投稿時のスラッグ(パーマリンク)を変更したい

  • 解決済 konbushi

    (@konbushi)


    投稿した記事のスラッグを変更したいと思い、
    いろいろと調べたところ、
    以下のようなコードを見つけました。

    <?php
    function auto_post_slug( $slug, $post_ID, $post_status, $post_type ) {
    
        $nowPostId = 1;
    
        if ( preg_match( '/(%[0-9a-f]{2})+/', $slug ) ||  preg_match( '/[0-9]{4}/', $slug )) {
          if($post_ID > $nowPostId) {
            $slug = 'post-' . $post_ID;
            //$slug = $post_ID . '.html';
          }
        }
        return $slug;
    }
    add_filter( 'wp_unique_post_slug', 'auto_post_slug', 10, 4  );
    ?>

    ※このコードは、パーマリンク設定のカスタム構造で、
     「/%postname%」と設定した時に、機能するようです。

    上記のコードだと、スラッグが
    「http://サイトのURL/post-〇〇」という形になりました。
    (〇〇には、IDが入っているようです。)

    このスラッグを、
    「http://サイトのURL/post/〇〇」という形に変更したいです。

    どのようにしていいのかわからなかったので
    質問をさせていただきました。

    もし、わかる方、アドバイスいただけますと嬉しいです。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    普通に、ダッシュボードのパーマリンク設定を変更するのだとだめですか?

    トピック投稿者 konbushi

    (@konbushi)

    初心者で理解していなくて申し訳ないのですが、
    ダッシュボードのパーマリンク設定を変更するというのは、
    私の希望のスラッグにするために、
    カスタム構造で、「/post/%post_id%」と記入する、
    ということでしょうか?

    私が最初に示したコードは、
    http://www.wakatta-blog.com/wordpress-permalink-4-humber-url.html
    というサイトのものでした。

    このサイトによると、
    4ケタの数字についての問題を言及されていたので、
    最初に示したコードのように、なにかしらの工夫をしないと、
    4ケタのエラーに引っ掛かるのではないかと思い、
    コードの改善で、私の希望のものにしたいと考えていました。

    パーマリンク設定のカスタム構造で
    自分から設定することで、
    このような問題ともぶつかることはないのでしょうか?

    素人の質問で、長くなってしまい、すいません・・

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    カスタム構造を使わずに、はじめから用意されている選択肢の中で「数字ベース」を選ぶ、
    つまり/archives/%post_id% にすればよいと思います。

    個人的には、正直こちらのブログに書いてあることは上級者向けであると感じます。
    そもそも数字ベースのパーマリンク設定をしている環境下で年別アーカイブの時は、勝手に/archives/date/2013という感じで/dateが勝手に入るはずで、普通に使っていればこのようなトラブルは起こりません。
    /%post_id%を使用している場合はこちらのブログに記載のように、年月アーカイブとsingleページのパーマリンクがかぶるということは通常有り得ません。

    ただし、たしかにパーマリンク設定が/%post_id%ではなく/%postname%ベースになっている場合は自動で/dateが入らないので競合の可能性も考えられます。
    その場合は、投稿のスラッグの方を変えてしまえばいいわけで、わざわざfunctions.phpで設定する必要はまずないものです。

    初心者さんであれば、なおのこと変なカスタマイズをせずに極力標準機能で進めることが重要だと思います。

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    あ、このブログのFacebookコメント欄に書いてありましたね。

    理由が、年別と競合するという理由であれば、%post_id% を避ける必要はありません。
    パーマリンク設定で、スラッグで区切られた頭から3つめまでに、%post_id% が存在する場合、期間別のパーマリンクには自動的に、date/ が入るようになっています。
    フォーラムの事例では、%postname% にしていて、自ら数字入力を行っていたため、競合してしまったということです。

    つまりそういうことで、普通に使っていれはこのブログに記載の内容はしなくてもよいことなのです。

    ※このブログの著者の方は特殊なケースであることを認識されて書いていると思いますが、これを読んだ多くの人に「/%post_id%は危険」という誤解を与えやすい記事かもしれません・むしろ%post_id%を使っていれば問題ないのです。

    トピック投稿者 konbushi

    (@konbushi)

    この話は上級者向けだったんですね

    考えるとかなり混乱してしまいまして・・

    結果的には
    特に心配する必要などは無く、
    普通に「post/%post_id%/」というパーマリンクで設定すれば
    問題ないということで大丈夫でしょうか?

    モデレーター のむらけい (Kei Nomura)

    (@mypacecreator)

    はい。post_idベースのパーマリンクを使っていれば、年の数字と競合は起こりません。
    気をつけるのはpostnameの時のみです。
    もしカスタムパーマリンクのことについて予備知識がなければ、カスタム構造のところに自分で書かずに、すでに用意されている選択肢から選ぶのが無難です。

    トピック投稿者 konbushi

    (@konbushi)

    勉強不足なので、
    もう少し自分で勉強したいと思います。

    パーマリンクについて、ご指導いただきありがとうございました。
    当初の目的は達成できましたので、
    解決済みとさせていただきます。

    本当にありがとうございました。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「投稿時のスラッグ(パーマリンク)を変更したい」には新たに返信することはできません。