web-dev-qa-db-ja.com

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

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

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

私のプロジェクトのカスタム投稿タイプ専用にパーマリンクを書き直す方法がなければならないことを私は知っています。しかし、私はURLスラッグを宣言する際の構文に慣れていません。

30
Jake

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

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

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

これに変わります:

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

詳細については、 register_post_typeのcodexエントリ からのrewrite引数を調べてください。

編集:コードを更新した後、Settings> Permalinksにアクセスして書き換えルールをフラッシュするようにしてください。そうでなければ、あなたはまだ古いリンクを見るでしょう。

37
0x61696f

私は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に必要なものは何でも入れ替えることができます。

頑張ってください、そしていつものように - 戻ってきてそれがどのようにうまくいったかを私たちに知らせてください! :)

14
cmegown