カスタム投稿タイプのURL書き換え?


32

ポートフォリオプロジェクトのカスタム投稿タイプを設定します。このメインURLは次の場所にあります/projects/

これ/articles/*/で、パーマリンク構造のブログ投稿パーマリンクも設定しました。つまり、ポートフォリオプロジェクトを表示すると、URLが次のように変わります。/articles/projects/project-name/

私のプロジェクトのカスタム投稿タイプに対してのみパーマリンクを書き換える方法があるに違いないことを知っています。しかし、私はURLスラッグを宣言する構文に慣れていない-私が得ることができる助けをいただければ幸いです!

回答:


42

カスタム投稿タイプを登録するとき、書き換えルールを既存のURL構造の前に追加しないように指定する必要があります。

要するに、これはあなたのregister_post_type呼び出しのこの行を意味します:

'rewrite' => array('slug' => 'projects'),

これに変わります:

'rewrite' => array('slug' => 'projects','with_front' => false),

詳細についてrewriteは、上のコーデックスエントリから引数を確認してください。register_post_type

編集:コードを更新した後、[設定]> [パーマリンク]にアクセスして、書き換えルールをフラッシュしてください。それ以外の場合は、古いリンクが引き続き表示されます。


素晴らしいありがとう!明確にするために、ルールをフラッシュするために必要なことは、[設定]-> [パーマリンク]ページに移動して[変更を保存]をクリックするだけです。
ジェイク

4
変更を保存する必要さえありません。Permalinks設定ページを開くだけで十分です(つまり、.htaccessファイルが書き込み可能な場合。そうでない場合は、変更を保存し、.htaccessで返されるコードを手動でコピーします)
0x61696f

2
これは私にはうまくいかないようです。私のプロジェクトの投稿はまだ行っていexample.com/projects/title-of-postます。パーマリンクのページも訪れました。これは何が原因ですか?myには書き換えルールはありませんhtaccess
デジ

うわー、それは行方不明の部分でした!パーマリンクのページに
アクセス

書き換えルールをフラッシュせずに、物事を変え続けました。ヒントをありがとう!
Tan-007

15

この問題は文字通り3日前に発生し、その後wp.​​tutsplus.comでシリーズを見つけました。私はあなたの質問にうまく対応するために自分のコードを交換しましたが、これはシリーズを読んだ後になってしまったものです。また、これはテストされていないことに注意してください。

// sets custom post type
function my_custom_post_type() {
    register_post_type('Projects', array(   
       'label' => 'Projects','description' => '',
       'public' => true,
       'show_ui' => true,
       'show_in_menu' => true,
       'capability_type' => 'post',
       'hierarchical' => false,
       'publicly_queryable' => true,
       'rewrite' => false,
       'query_var' => true,
       'has_archive' => true,
       'supports' => array('title','editor','excerpt','trackbacks','custom-fields','comments','revisions','thumbnail','author','page-attributes'),
       'taxonomies' => array('category','post_tag'),
       // there are a lot more available arguments, but the above is plenty for now
    ));
}

add_action('init', 'my_custom_post_type');

// rewrites custom post type name
global $wp_rewrite;
$projects_structure = '/projects/%year%/%monthnum%/%day%/%projects%/';
$wp_rewrite->add_rewrite_tag("%projects%", '([^/]+)', "project=");
$wp_rewrite->add_permastruct('projects', $projects_structure, false);

理論的には、$projects_structure変数に格納されているURLで必要なものは何でもスワップアウトできます。私が使用することになったものは何ですか。

頑張って、いつものように-戻って来て、それがどのように機能したかをお知らせください!:)


1
リンクだけで構成されている回答は、それらのリソースが将来存在しなくなる可能性があるため(おそらくおそらくなくなるため)、一般に役に立たないと見なされます。コンテンツを要約します。
chrisguitarguy

結構です、私は適切な改訂に取り組みます。
cmegown

11
そこで、私の回答には、カスタム投稿タイプのURLを正常に書き換える本番環境で動作するコードと同様のコードが含まれています。それがより役立つことが証明されることを願っています!
cmegown
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.