Intereting Posts
WordPress Stats Plugin: Показать сообщения Просмотров Плагин, который интегрирует Google Storage в WordPress? Имя сайта не отображается в строке браузера, только URL Условная постоянная ссылка на категорию? Как я могу применить no-disposable при программном добавлении пользователя с помощью wp_insert_user ()? Пользовательская структура постоянной позиции типа с категорией, также действующей в качестве архива Самый быстрый способ создания уникального идентификационного номера при регистрации пользователя Попытка опубликовать комментарий WordPress на моем сайте перенаправляет на 127.0.0.1 плагины-list-category-post настраиваемые поля Хранилище учетных данных Webservice Force WP игнорировать несколько пробелов Добавить действие для создания нового сообщения после пожара wp_insert_post? Подумайте, что он создает бесконечную петлю Расположение меню по идентификатору меню или идентификатору меню в start_el () Walker Пользовательский вход iframe не работает Отображение моих пользовательских таксономий в <ul> с помощью the_term_list ()

Пользовательский тип сообщения, нет необходимости в отдельном представлении, плюс необходимость перезаписи постоянной ссылки, которые включают хеш в URI

Мы используем CPT для управления страницей часто задаваемых вопросов на сайте, где вопрос – это заголовок сообщения, а ответ – это содержимое сообщения. Существует основная страница часто задаваемых вопросов, которая показывает все сообщения (страница с архивами FAQ). С этой структурой мы действительно не нуждаемся в одном представлении для любых часто задаваемых вопросов и на самом деле хотели бы опустить его из структуры сайта. Чтобы обратиться к постоянным ссылкам, мы хотели бы установить их как example.com/faq/#uniqueIdentifier, думая, что мы будем использовать #uniqueIdentifier для соответствия div на странице архива, содержащей ответ, и обратить внимание на него в некоторых мода. Уникальным идентификатором может быть идентификатор сообщения, имя вопроса faq, данные из мета-поля или что-то еще.

Поэтому позвольте мне привести то, что мне нужно, чтобы выполнить:

(1) переписать faq permalinks как / faq / # что-то, и

(2) убедитесь, что все / faq / links маршрутизируются в архив, а не один

Я в основном нооб, но довольно хорошо разбираюсь в вещах. Никогда не пытались переписывать, хотя так оценили бы какое-то конкретное направление.

Спасибо.

Solutions Collecting From Web of "Пользовательский тип сообщения, нет необходимости в отдельном представлении, плюс необходимость перезаписи постоянной ссылки, которые включают хеш в URI"

Привет @daxitude:

Позвольте мне сначала предложить вам пересмотреть. Если у вас нет отдельных страниц часто задаваемых вопросов для каждого FAQ:

  1. Вы уменьшаете свою поверхность для оптимизации поисковых систем и уменьшения потенциального трафика, который вы можете получить, и

  2. Вы не позволяете кому-то делиться конкретным FAQ с другом по электронной почте и / или делиться с их сетью на Facebook, Twitter и т. Д. (Как пользователь я всегда разочарован разработчиками сайтов, которые запрещают мне иметь прямой URL-адрес к элементу и вместо этого принудить меня ссылаться на страницу, в которой перечислены все элементы.)

Однако, если вы все еще хотите сделать это, выполните две вещи:

1.) Используйте крюк 'post_type_link'

Используйте URL-адрес 'post_type_link' для изменения URL-адреса, как в следующем примере * (я предполагаю, что ваш пользовательский тип сообщения является 'faq' ). Добавьте в файл functions.php вашей темы следующее:

 add_action('post_type_link','yoursite_post_type_link',10,2); function yoursite_post_type_link($link,$post) { $post_type = 'faq'; if ($post->post_type==$post_type) { $link = get_post_type_archive_link($post_type) ."#{$post->post_name}"; } return $link; } 

2.) unset($wp_rewrite->extra_permastructs['faq'])

Это взломать , но это необходимый хак, чтобы делать то, что вы хотите. Используйте 'init' hook для unset($wp_rewrite->extra_permastructs['faq']) . Он удаляет правило перезаписи, которое добавляет register_post_type() . Я включаю вызов register_post_type() поэтому я могу предоставить полный пример для вас и других:

 add_action('init','yoursite_init'); function yoursite_init() { register_post_type('faq',array( 'labels' => array( 'name' => _x('FAQs', 'post type general name'), 'singular_name' => _x('FAQ', 'post type singular name'), 'add_new' => _x('Add New', 'faq'), 'add_new_item' => __('Add New FAQ'), 'edit_item' => __('Edit FAQ'), 'new_item' => __('New FAQ'), 'view_item' => __('View FAQ'), 'search_items' => __('Search FAQs'), 'not_found' => __('No FAQs found'), 'not_found_in_trash' => __('No FAQs found in Trash'), 'parent_item_colon' => '', 'menu_name' => 'FAQs' ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug'=>'faqs'), 'capability_type' => 'post', 'has_archive' => 'faqs', 'hierarchical' => false, 'supports' => array('title','editor','author','thumbnail','excerpt') )); global $wp_rewrite; unset($wp_rewrite->extra_permastructs['faq']); // Removed URL rewrite for specific FAQ $wp_rewrite->flush_rules(); // THIS SHOULD BE DONE IN A PLUGIN ACTIVATION HOOK, NOT HERE! } не add_action('init','yoursite_init'); function yoursite_init() { register_post_type('faq',array( 'labels' => array( 'name' => _x('FAQs', 'post type general name'), 'singular_name' => _x('FAQ', 'post type singular name'), 'add_new' => _x('Add New', 'faq'), 'add_new_item' => __('Add New FAQ'), 'edit_item' => __('Edit FAQ'), 'new_item' => __('New FAQ'), 'view_item' => __('View FAQ'), 'search_items' => __('Search FAQs'), 'not_found' => __('No FAQs found'), 'not_found_in_trash' => __('No FAQs found in Trash'), 'parent_item_colon' => '', 'menu_name' => 'FAQs' ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug'=>'faqs'), 'capability_type' => 'post', 'has_archive' => 'faqs', 'hierarchical' => false, 'supports' => array('title','editor','author','thumbnail','excerpt') )); global $wp_rewrite; unset($wp_rewrite->extra_permastructs['faq']); // Removed URL rewrite for specific FAQ $wp_rewrite->flush_rules(); // THIS SHOULD BE DONE IN A PLUGIN ACTIVATION HOOK, NOT HERE! } 

Вот и все.

Разумеется, вышеупомянутое использование $wp_rewrite->flush_rules() в hook 'init' действительно очень плохое, и его действительно нужно делать только один раз, поэтому я сделал полный и автономный плагин с именем FAQ_Post_Type чтобы сделать это правильно. Этот плагин добавляет тип сообщения типа FAQ с необходимыми правилами URL-адреса и использует register_activation_hook() чтобы очистить правила перезаписи; активация, очевидно, является одной из немногих вещей, которая требует кода плагина вместо кода, который может запускаться в файле functions.php темы.

Вот код для плагина FAQ_Post_Type ; не стесняйтесь изменять для своих требований:

 <?php /* Plugin Name: FAQ Post Type Description: Answers the question "Custom post type, no need for single view, plus want permalink rewrites that include hash in URI" on WordPress Answers. Plugin URL: http://wordpress.stackexchange.com/questions/12762/custom-post-type-no-need-for-single-view-plus-want-permalink-rewrites-that-incl */ if (!class_exists('FAQ_Post_Type')) { class FAQ_Post_Type { static function on_load() { add_action('post_type_link', array(__CLASS__,'post_type_link'),10,2); add_action('init', array(__CLASS__,'init')); } static function post_type_link($link,$post) { if ('faq'==$post->post_type) { $link = get_post_type_archive_link('faq') ."#{$post->post_name}"; } return $link; } static function init() { register_post_type('faq',array( 'labels' => array( 'name' => _x('FAQs', 'post type general name'), 'singular_name' => _x('FAQ', 'post type singular name'), 'add_new' => _x('Add New', 'faq'), 'add_new_item' => __('Add New FAQ'), 'edit_item' => __('Edit FAQ'), 'new_item' => __('New FAQ'), 'view_item' => __('View FAQ'), 'search_items' => __('Search FAQs'), 'not_found' => __('No FAQs found'), 'not_found_in_trash' => __('No FAQs found in Trash'), 'parent_item_colon' => '', 'menu_name' => 'FAQs' ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug'=>'faqs'), 'capability_type' => 'post', 'has_archive' => 'faqs', 'hierarchical' => false, 'supports' => array('title','editor','author','thumbnail','excerpt'), )); global $wp_rewrite; unset($wp_rewrite->extra_permastructs['faq']); // Remove URL rewrite for specific FAQ } static function activate() { global $wp_rewrite; $wp_rewrite->flush_rules(); } } FAQ_Post_Type::on_load(); register_activation_hook(__FILE__,array('FAQ_Post_Type','activate')); } не <?php /* Plugin Name: FAQ Post Type Description: Answers the question "Custom post type, no need for single view, plus want permalink rewrites that include hash in URI" on WordPress Answers. Plugin URL: http://wordpress.stackexchange.com/questions/12762/custom-post-type-no-need-for-single-view-plus-want-permalink-rewrites-that-incl */ if (!class_exists('FAQ_Post_Type')) { class FAQ_Post_Type { static function on_load() { add_action('post_type_link', array(__CLASS__,'post_type_link'),10,2); add_action('init', array(__CLASS__,'init')); } static function post_type_link($link,$post) { if ('faq'==$post->post_type) { $link = get_post_type_archive_link('faq') ."#{$post->post_name}"; } return $link; } static function init() { register_post_type('faq',array( 'labels' => array( 'name' => _x('FAQs', 'post type general name'), 'singular_name' => _x('FAQ', 'post type singular name'), 'add_new' => _x('Add New', 'faq'), 'add_new_item' => __('Add New FAQ'), 'edit_item' => __('Edit FAQ'), 'new_item' => __('New FAQ'), 'view_item' => __('View FAQ'), 'search_items' => __('Search FAQs'), 'not_found' => __('No FAQs found'), 'not_found_in_trash' => __('No FAQs found in Trash'), 'parent_item_colon' => '', 'menu_name' => 'FAQs' ), 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array('slug'=>'faqs'), 'capability_type' => 'post', 'has_archive' => 'faqs', 'hierarchical' => false, 'supports' => array('title','editor','author','thumbnail','excerpt'), )); global $wp_rewrite; unset($wp_rewrite->extra_permastructs['faq']); // Remove URL rewrite for specific FAQ } static function activate() { global $wp_rewrite; $wp_rewrite->flush_rules(); } } FAQ_Post_Type::on_load(); register_activation_hook(__FILE__,array('FAQ_Post_Type','activate')); } 

Вы также могли бы сохранить правила флеша внутри 'init' , используя проверку для значения параметра, если вы предпочитаете это:

 // Add this code in your 'init' hook at your register_post_type('faq',...) if (!get_option('faq_rewrite_rules_updated')) { global $wp_rewrite; unset($wp_rewrite->extra_permastructs['faq']); // Remove URL rewrite for specific FAQ $wp_rewrite->flush_rules(); update_option('faq_rewrite_rules_updated',true); } не // Add this code in your 'init' hook at your register_post_type('faq',...) if (!get_option('faq_rewrite_rules_updated')) { global $wp_rewrite; unset($wp_rewrite->extra_permastructs['faq']); // Remove URL rewrite for specific FAQ $wp_rewrite->flush_rules(); update_option('faq_rewrite_rules_updated',true); } 

Твой выбор.

В любом случае, дайте мне знать, есть ли случаи использования, которые вы обнаружите, что это не касается.