web-dev-qa-db-ja.com

子テーマ専用のポストタイプスラッグを書き換える

私はメンテナンスのためにいくつかのブログが同じ親テーマを共有するマルチサイトにいます。私のすべてのcptはその親テーマから来ています、しかし私はそれがURLマスクを持っていたというブログのうちの1つのためにそれが本当に欲しいです。

私は この答え がラベルを変更するのに非常に有用であることを発見しました、しかし私は同じことをして$wp_post_types[$post_type]->rewrite['slug']に違うスラッグを割り当てようとしました配列全体をNULLに書き換えます。

私もRewriteRule ^/newslug$ /oldslug [L]で.htaccesを試しましたが成功しませんでした。

これを行うきれいな方法はありますか?

1
moraleida

カスタム投稿タイプを登録するときは、 スラッグを翻訳可能 にします。

register_post_type( 
    'post_type_name', 
    array (
        'rewrite' => array (
            'slug' => _x( 'post_type_name', 'URL slug', 'your_text_domain' )
        )
    )
);

次に、スラッグを変更したいサイトのための小さなプラグインを作成します。

add_filter( 'gettext_with_context', 'change_my_slug', 10, 4 );

function change_my_slug( $translation, $text, $context, $domain )
{
    if ( 'URL slug' !== $context or 'post_type_name' !== $text or 'your_text_domain' !== $domain )
        return $translation;

    return 'changed-slug';
}
1
fuxia