Я определяю URL пользовательского средства просмотра сообщений:
add_action('init', static function() {
add_rewrite_rule('balls/(.*)', 'index.php?page_id=48&post_name=$matches[1]', 'top'); // 48 is the page to view the post of "balls"
$GLOBALS['wp']->add_query_var('post_name');
$GLOBALS['wp_rewrite']->flush_rules(false);
});
, вот как я его регистрирую:
register_post_type('balls', [
'labels' => [
'name' => 'balls',
'singular_name' => 'balls',
'add_new' => 'new',
'add_new_item' => 'new',
'edit_item' => 'edit',
'new_item' => 'new',
'view_item' => 'view',
'search_items' => 'search',
'not_found' => 'balls not found',
'parent_item_colon' => '',
'menu_name' => 'basketballs'
],
'taxonomies' => ['category'],
'menu_position' => 4,
'public' => true,
'query_var' => true,
'capability_type' => 'post',
'supports' => ['title', 'editor', 'thumbnail']
]);
, поэтому я по этому адресу:
/balls/name-of-ball
и в виджете:
global $post;
$post->ID
равно 48 вместо идентификатора "name-of-ball"