カスタム投稿タイプのURL書き換え?
2 回答
- 投票
-
- 2012-05-25
カスタム投稿タイプを登録するときは、書き換えルールの前に既存のURL構造を追加しないように指定する必要があります.
つまり、これは
register_post_type
呼び出しの次の行を意味します:'rewrite'=>array( 'slug'=> 'projects')、
これに変換する必要があります:
'rewrite'=>array( 'slug'=> 'projects'、 'with_front'=>false)、
詳細については、
register_post_typeの
codexエントリの rewrite
引数を確認してください.編集:コードを更新した後、[設定]> [パーマリンク]にアクセスして、書き換えルールをフラッシュするようにしてください.それ以外の場合は、古いリンクが引き続き表示されます.
When you register the custom post type, you have to specify that the rewrite rule shouldn't be prepended with the existing URL structure.
In short, this means that this line in your
register_post_type
call:'rewrite' => array('slug' => 'projects'),
should turn into this:
'rewrite' => array('slug' => 'projects','with_front' => false),
For more info, check out the
rewrite
argument from the codex entry onregister_post_type
edit: just make sure that, after updating the code, you flush the rewrite rules by visiting Settings > Permalinks. Otherwise you'll still see the old links.
-
素晴らしいありがとう!明確にするために、ルールをフラッシュするために必要なのは、[設定]-> [パーマリンク]ページに移動し、[変更を保存]をクリックすることだけです.brilliant thank you! Just to clarify, all I need to do for flushing rules is to go to the Settings->Permalinks page and hit "Save Changes", correct?
- 0
- 2012-05-25
- Jake
-
変更を保存する必要もありません.パーマリンク設定ページを開くだけで十分です(つまり、.htaccessファイルが書き込み可能である場合.そうでない場合は、[変更を保存]を押して、.htaccessに返されるコードを手動でコピーします)You don't even need to save changes. It's enough just to open the Permalinks settings page (that is, if your .htaccess file is writable. If not, press save changes and manually copy the code it returns in your .htaccess)
- 4
- 2012-05-25
- 0x61696f
-
これは私にはうまくいかないようです.私のプロジェクトの投稿はまだ `example.com/projects/title-of-post`に行きます.パーマリンクのページにもアクセスしました.何が原因でしょうか?私の `htaccess`には書き換えルールがありません.This doesn't seem to work for me. My projects posts are still going to `example.com/projects/title-of-post`. I visited the Permalinks page too. What could be causing this? There aren't any rewrite rules in my `htaccess`.
- 2
- 2015-01-25
- Desi
-
うわー、それが欠けていた部分に感謝します!パーマリンクページへのアクセスは機能しませんでしたが、現在のパーマリンク設定を保存するだけで機能しました:)Wow, thanks that was the missing part! Visiting the permalinks page did not work, but just SAVING the current permalink settings worked :)
- 1
- 2019-02-28
- Alexander Taubenkorb
-
書き換えルールをフラッシュせずに変更を続けました.ヒントをありがとう!I kept on changing things without flushing the rewrite rules. Thanks for the tip!
- 1
- 2019-11-14
- Tan-007
-
- 2012-05-25
この問題は文字通り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で必要なものをすべて交換できますが、最終的に使用したものは何ですか.頑張ってください.いつものように、必ず戻ってきて、どのように機能したかをお知らせください. :)
I had this problem literally 3 days ago, then I stumbled across a series over at wp.tutsplus.com. I swapped my own code out to accommodate your question better, but this is what I ended up with after following the series. Also, keep in mind that this is untested.
// 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);
Theoretically, you could swap out whatever you want in the URL stored in the
$projects_structure
variable, what is there is just what I ended up using.Good luck, and as always - make sure to come back and let us know how it worked out! :)
-
リンクだけで構成されている回答は、それらのリソースが将来存在しなくなる可能性があるため、一般的に役に立たないと見なされます.内容を要約します.Answers that are just composed of links are generally considered unhelpful as those resources can (and probably will) cease to exist in the future. Summarize the content.
- 1
- 2012-05-25
- chrisguitarguy
-
十分に公平です、私は適切な改訂に取り組みます.Fair enough, I'll work on a proper revision.
- 0
- 2012-05-25
- cmegown
-
そこで、私の回答には、カスタム投稿タイプのURLを正常に書き換える本番環境で使用している作業コードと同様のコードが含まれています.それがもっと役立つことを証明することを願っています!There, now my answer contains similar code to working code that I have in a production environment that successfully rewrites a custom post type URL. Hope it proves to be more helpful!
- 11
- 2012-05-25
- cmegown
ポートフォリオプロジェクトのカスタム投稿タイプを設定します.このメインのURLは
にあります/projects/
これで、パーマリンク構造の
に変更されることを意味します./articles/*/
へのブログ投稿パーマリンクも設定しました.これは、ポートフォリオプロジェクトを表示すると、URLが/articles/projects/project-name/
プロジェクトのカスタム投稿タイプのパーマリンクをのみ書き換える方法が必要であることはわかっています.しかし、私はURLスラッグを宣言する際の構文に慣れていません.私が得ることができる助けをいただければ幸いです!