Перезапись URL настраиваемого типа сообщения?
2 ответ
- голосов
-
- 2012-05-25
Когда вы регистрируете пользовательский тип сообщения,вы должны указать,что правило перезаписи не должно добавляться к существующей структуре URL.
Короче говоря,это означает,что эта строка в вашем вызове
register_post_type
:'rewrite' => array('slug' => 'projects'),
должен превратиться в это:
'rewrite' => array('slug' => 'projects','with_front' => false),
Для получения дополнительной информации ознакомьтесь с аргументом
rewrite
из записи кодекса вregister_post_type
edit: просто убедитесь,что после обновления кода вы сбрасываете правила перезаписи,открыв «Настройки»> «Постоянные ссылки».В противном случае вы по-прежнему будете видеть старые ссылки.
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);
Теоретически вы можете поменять все,что хотите,в URL-адресе,хранящемся в переменной
$projects_structure
,то есть именно то,что я в итоге использовал.Удачи,и,как всегда,обязательно возвращайтесь и расскажите нам,как все прошло! :)
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 - буду признателен за любую помощь,которую я могу получить!