Удаленная страница архива по типу публикации сообщений показывает страницу блога

На веб-сайте, созданным с помощью приобретенного шаблона, пользовательский пост-тип имел страницу архива. Мне не нужна эта страница архива, поэтому я изменил пользовательский пост-тип в дочерней теме следующим образом:

function remove_archive(){ $portfolio = get_post_type_object( 'portfolio' ); $portfolio->has_archive = FALSE; register_post_type( 'portfolio', $portfolio ); } add_action( 'init', 'remove_archive', 20 ); 

Это удалило пользовательский архив пост-типа. Однако я был намерен, что URL-адрес / портфолио будет освобожден для использования на странице. Но даже после обновления постоянных ссылок, очистки кешей и т. Д. URL не указывает на страницу. Вместо этого он указывает на страницу блога, которая вообще не установлена ​​в настройках.

Решение должно быть в ситуации, когда /portfolio является страницей, а /portfolio/* – структурой URL-адресов для сообщений. Однако в данный момент это никоим образом не работает.

Я что-то упускаю?

редактировать

Согласно комментарию Питера, я добавил шаблон template_include :

 function uncode_redirect_page($original_template) { global $is_redirect; $is_redirect_active = ot_get_option('_uncode_redirect'); if ($is_redirect_active === 'on') { if(! is_user_logged_in() ) { $is_redirect = true; return get_template_directory() . '/redirect-page.php'; } } return $original_template; } add_filter('template_include', 'uncode_redirect_page'); 

Solutions Collecting From Web of "Удаленная страница архива по типу публикации сообщений показывает страницу блога"

Если вы используете WordPress 4.4+ ( что вам нужно ), вы можете использовать фильтр register_post_type_args для настройки аргументов, переданных register_post_type() при регистрации типа сообщения. В своей дочерней теме вы можете сделать следующее

 add_filter( 'register_post_type_args', function( $args, $post_type ) { // Make sure we only target the portfolio post type if ( 'portfolio' !== $post_type ) return $args; /** * We are currently registering the portfolio post type, lets continue * For debugging purposes, you can do the following inside the filter * ?><pre><?php var_dump($args); ?></pre><?php * * Modify the arguments as needed */ $args['has_archive'] = false; $args['rewrite'] = true; return $args; }, PHP_INT_MAX, 2); 

Просто не забудьте очистить свои правила перезаписи после добавления фильтра. Убедитесь, что вы отрегулировали фильтр в соответствии с вашими потребностями. Это должно заботиться о загрузке шаблона, вы должны увидеть загруженную страницу, которую вы создали в конце, когда вы посещаете http://example.com/portfolio/ ( если ваша созданная страница имеет пул portfolio , то есть структуру постоянной ссылки http://example.com/portfolio/ ).

Если это не сработает, у вас есть что-то внутри вашей темы, которое вызывает эту проблему, скорее, действие pre_get_posts которое, как предполагается, предназначается для страницы типа публикации в portfolio . Вы также должны подумать о плохом переписывании

РЕДАКТИРОВАТЬ

Последняя проблема заключалась в том, что фильтр template_include упомянутый в вопросе, вызывал проблему. Удаление фильтра в дочерней теме и reflushing permalinks решило проблему

Страница архива создается в соответствии с названием slug post post, поэтому, если вы хотите портфолио как простую страницу, а не страницу архива, просто измените пул типа портфолио. Это решит вашу проблему.

 $labels = array( 'name' => _x( 'Blog', 'post type general name', 'your-plugin-textdomain' ), 'singular_name' => _x( 'Blog', 'post type singular name', 'your-plugin-textdomain' ), 'menu_name' => _x( 'Blog', 'admin menu', 'your-plugin-textdomain' ), 'name_admin_bar' => _x( 'Blog', 'add new on admin bar', 'your-plugin-textdomain' ), 'add_new' => _x( 'Add New', 'Blog', 'your-plugin-textdomain' ), 'add_new_item' => __( 'Add New Blog', 'your-plugin-textdomain' ), 'new_item' => __( 'New Blog', 'your-plugin-textdomain' ), 'edit_item' => __( 'Edit Blog', 'your-plugin-textdomain' ), 'view_item' => __( 'View Blog', 'your-plugin-textdomain' ), 'all_items' => __( 'All Blog', 'your-plugin-textdomain' ), 'search_items' => __( 'Search Blog', 'your-plugin-textdomain' ), 'parent_item_colon' => __( 'Parent Blog:', 'your-plugin-textdomain' ), 'not_found' => __( 'No Blog found.', 'your-plugin-textdomain' ), 'not_found_in_trash' => __( 'No Blog found in Trash.', 'your-plugin-textdomain' ) ); $args = array( 'labels' => $labels, 'public' => true, 'publicly_queryable' => true, 'show_ui' => true, 'show_in_menu' => true, 'query_var' => true, 'rewrite' => array( 'slug' => 'test' ), 'capability_type' => 'post', 'has_archive' => true, 'hierarchical' => false, 'menu_position' => null, 'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt',) ); register_post_type( 'Blog', $args );