web-dev-qa-db-ja.com

パーマリンク構造に書き換え規則を追加する

[設定]> [パーマリンク]で、投稿用のカスタム構造を次のように設定します。

/%category%/%post_id%-%postname%

これは私の投稿の大部分ではうまくいきますが、post_idを削除したいカテゴリが1つあります。

/%category%/%postname%

カテゴリがMOUSEでpost-idが123、postname(slug)がmy-great-mouse-postの場合、パーマリンクは正しく次のようになります。

mydomain.com/mouse/123-my-great-mouse-post

しかし、カテゴリがDOGの場合、私はpost-idを使いたくないので、このようになります。

mydomain.com/dog/my-great-dog-post

私は自分のfunctions.phpやプラグインでアクションやフィルタを使う方法を理解していますし、add_rewrite_ruleを使いたいと思いますが、正規表現としての規則の書き方は複雑で理解できないので、混乱しています。

3
jsherk

1.新しい書き換え規則を追加します。

add_action('init', function()
{
    add_rewrite_rule('^dog/([^/]+)/?$', 'index.php?cat=dog&name=$matches[1]', 'top');
}, 10, 0);

2.投稿リンクをフィルタリングします。

add_filter('post_link', function($post_link, $post, $leave_name = false, $sample = false)
{
    if ( is_object_in_term($post->ID, 'category', 'DOG') ) {
        $post_link = str_replace($post->ID . '-', '', $post_link);
    }

    return $post_link;

}, 10, 4);

functions.phpで試してください。それがあなたのために働くことを願っています!

3
Jane Brye