Intereting Posts

custom_post_type с has_archive не изменяет permalink

Я не могу переписать персонализированную постоянную ссылку на пост.

$labels = array( 'name' => __('VmGallery', THEME_TEXT_DOMAIN, THEME_TEXT_DOMAIN), 'singular_name' => __('VmGallery', THEME_TEXT_DOMAIN), 'add_new' => __('Add New', THEME_TEXT_DOMAIN), 'add_new_item' => __('Add New Gallery', THEME_TEXT_DOMAIN), 'edit_item' => __('Edit Gallery', THEME_TEXT_DOMAIN), 'new_item' => __('New Gallery', THEME_TEXT_DOMAIN), 'all_items' => __('All Galleries', THEME_TEXT_DOMAIN), 'view_item' => __('View Gallery', THEME_TEXT_DOMAIN), 'search_items' => __('Search Gallery', THEME_TEXT_DOMAIN), 'not_found' => __('No galleries found', THEME_TEXT_DOMAIN), 'not_found_in_trash' => __('No galleries found in the Trash', THEME_TEXT_DOMAIN), 'parent_item_colon' => '', 'menu_name' => __('Gallery', THEME_TEXT_DOMAIN), ); $supports = array('title', 'editor', 'thumbnail', 'excerpt', 'comments', 'custom-fields', 'post-formats', 'author', 'excerpt'); $args = array( 'labels' => $labels, 'description' => 'Galleries specific information', 'public' => true, 'menu_position' => 6, 'menu_icon' => 'dashicons-format-image', 'supports' => $supports, 'taxonomies' => array('gallery_categories', 'post_tag'), 'has_archive' => 'ggg' /*'rewrite' => array( 'slug' => $slug, 'with_front' => false ),*/ ); register_post_type('vmgallery', $args); 

У меня php-файл: archive-vmgallery.php Я думаю, что он должен быть загружен, когда URL-адрес myurl.com/ggg . Но вместо этого отображается страница ошибки 404. Если я использую тип post вместо ggg: myurl.com/vmgallery, загружается archive-vmgallery.php . Зачем? Я думал, что 'has_archive' => 'ggg' позволяет переписать slug?

Каждый раз, когда вы меняете правила перезаписи, вам нужно перестроить правила перезаписи в базе данных. Вы можете сделать эту flush_rewrite_rules() , но не используйте ее при каждой загрузке страницы, вам нужно сделать это только один раз. В общем, очень хороший способ сделать это – register_actionvation_hook() вашего плагина. Вы должны перестроить правила перезаписи также, когда ваш плагин отключен, чтобы удалить пользовательские правила перезаписи:

 register_activation_hook( __FILE__, function () { cyb_register_vmgallery_post_type(); flush_rewrite_rules(); } ); register_deactivation_hook( __FILE__, function () { flush_rewrite_rules(); } ); add_action( 'init', 'cyb_register_vmgallery_post_type' ); function cyb_register_vmgallery_post_type() { $labels = array( 'name' => __('VmGallery', THEME_TEXT_DOMAIN), 'singular_name' => __('VmGallery', THEME_TEXT_DOMAIN), 'add_new' => __('Add New', THEME_TEXT_DOMAIN), 'add_new_item' => __('Add New Gallery', THEME_TEXT_DOMAIN), 'edit_item' => __('Edit Gallery', THEME_TEXT_DOMAIN), 'new_item' => __('New Gallery', THEME_TEXT_DOMAIN), 'all_items' => __('All Galleries', THEME_TEXT_DOMAIN), 'view_item' => __('View Gallery', THEME_TEXT_DOMAIN), 'search_items' => __('Search Gallery', THEME_TEXT_DOMAIN), 'not_found' => __('No galleries found', THEME_TEXT_DOMAIN), 'not_found_in_trash' => __('No galleries found in the Trash', THEME_TEXT_DOMAIN), 'parent_item_colon' => '', 'menu_name' => __('Gallery', THEME_TEXT_DOMAIN), ); $supports = array('title', 'editor', 'thumbnail', 'excerpt', 'comments', 'custom-fields', 'post-formats', 'author', 'excerpt'); $args = array( 'labels' => $labels, 'description' => 'Galleries specific information', 'public' => true, 'menu_position' => 6, 'menu_icon' => 'dashicons-format-image', 'supports' => $supports, 'taxonomies' => array('gallery_categories', 'post_tag'), 'has_archive' => 'ggg' /*'rewrite' => array( 'slug' => $slug, 'with_front' => false ),*/ ); register_post_type('vmgallery', $args); }