У меня есть несколько пользовательских типов записей на сайте с URL-адресами, которые в настоящее время запрашивают идентификатор, и я пытаюсь переписать эти URL-адреса, чтобы использовать довольно постоянную структуру ссылок. Некоторые примеры почтовых URL:
пример 1:
текущий: https://accountability -framework.org / core-принципы /? Core_principle = 88
желательно: https://accountability -framework.org / core-принципы / 2-уважение к правам человека
пример 2:
текущий: https://accountability -framework.org / содержимое системы / free-before-and-информированный-согласия /? Guide_topic = 0
желательно: https://accountability -framework.org / «Содержание» / «Свободное предварительное и информированное согласие» / 1-fpic-Definition-and-Overview
Итак, желаемый формат URL:https://accountability -framework.org / name-of-post-type / name-of-post / name-of-theme-if-present
Как ни странно, при просмотре сообщения вWP admin, постоянная ссылка указана правильно:
, но содержимое всей страницы загружается неправильно.
Inнаш каталог post-types
, он находится в principles.php
(управляющий первым примером поста выше):
<?php
/**
* Principles
*/
namespace App;
add_action( 'init', '\App\principles_post_type' );
function principles_post_type() {
register_post_type(
'principle',
array(
'labels' => array(
'name' => __( 'Core Principles', TEXT_DOMAIN ),
'singular_name' => __( 'Core Principle', TEXT_DOMAIN ),
'add_new' => __( 'New Principle', TEXT_DOMAIN ),
'add_new_item' => __( 'Add New Principle', TEXT_DOMAIN ),
'new_item' => __( 'New Principle', TEXT_DOMAIN ),
'edit_item' => __( 'Edit Principle', TEXT_DOMAIN ),
'view_item' => __( 'View Principle', TEXT_DOMAIN ),
'all_items' => __( 'All Principles', TEXT_DOMAIN ),
'search_items' => __( 'Search Principles', TEXT_DOMAIN )
),
'public' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'hierarchical' => false,
'rewrite' => array( 'slug' => __( 'core-principles', TEXT_DOMAIN ), 'with_front' => false ),
'show_in_menu' => true,
'show_in_admin_bar' => true,
'supports' => array( 'title', 'revisions' ),
'menu_position' => 6,
'menu_icon' => 'dashicons-thumbs-up'
)
);
}
, и это в guidance.php
(goвторой пример сообщения выше):
<?php
/**
* Guidances
*/
namespace App;
add_action('init', '\App\guidance_post_type');
function guidance_post_type() {
register_post_type(
'guidance',
array(
'labels' => array(
'name' => __('Operational Guidance', TEXT_DOMAIN),
'singular_name' => __('Operational Guidance', TEXT_DOMAIN),
'add_new' => __('New Operational Guidance', TEXT_DOMAIN),
'add_new_item' => __('Add New Operational Guidance', TEXT_DOMAIN),
'new_item' => __('New Opertional Guidance', TEXT_DOMAIN),
'edit_item' => __('Edit Operational Guidance', TEXT_DOMAIN),
'view_item' => __('View Operational Guidance', TEXT_DOMAIN),
'all_items' => __('All Operational Guidance', TEXT_DOMAIN),
'search_items' => __('Search Operational Guidance', TEXT_DOMAIN)
),
'public' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'hierarchical' => false,
'rewrite' => array('slug' => __('contents-of-the-framework', TEXT_DOMAIN ), 'with_front' => false),
'show_in_menu' => true,
'show_in_admin_bar' => true,
'supports' => array('title', 'revisions'),
'menu_position' => 5,
'menu_icon' => 'dashicons-analytics'
)
);
}
Постоянные ссылки установлены на "Имя сообщения": https://accountability -framework.org / sample-post /
Что касается первого примера выше, я также попытался добавить правило перезаписи в principles.php
:
function core_principle_rewrite_tag_rule() {
add_rewrite_tag( '%core_principle%', '([^&]+)' );
add_rewrite_rule( '^core_principles/([^/]*)/?', 'index.php?core_principle=$matches[1]','top' );
}
add_action('init', 'core_principle_rewrite_tag_rule', 10, 0);
Но без кубиков. Как настроить URL-адреса всех этих пользовательских типов записей в соответствии с нужным форматом?
Я использую WordPress версии 5.2.4 с темой для начинающих Sage: https://roots.io/sage/
Спасибо.