Поддержка Проблемы и решения Cвой тип записи!Не работает шаблон

  • В functions.php зарегистрировал 2 новых типа записи (Новости и Портфолио), создал шаблон для полного открытия записи для них (single-post_news.php, single-post_portfolio.php), вроде как сделал всё правильно, записи добавляются, но при открытии Новости выводятся в своём шаблоне, а вот Портфолио даже не в стандартном, а вообще в index.php и то просто пустая страница.
    В чем может быть проблема, помогите решить, если это конечно возможно.
    Вот код которым я регистрировал, второй такой же, только для портфолио:

    function custom_post_type() {
    
    	$labels = array(
    		'name'                => _x( 'Новости', 'Post Type General Name', 'text_domain' ),
    		'singular_name'       => _x( 'Новости', 'Post Type Singular Name', 'text_domain' ),
    		'menu_name'           => __( 'Новости', 'text_domain' ),
    		'name_admin_bar'      => __( 'Новости', 'text_domain' ),
    		'parent_item_colon'   => __( 'Parent Item:', 'text_domain' ),
    		'all_items'           => __( 'Все новости', 'text_domain' ),
    		'add_new_item'        => __( 'Добавление записи', 'text_domain' ),
    		'add_new'             => __( 'Добавить новость', 'text_domain' ),
    		'new_item'            => __( 'Новая запись', 'text_domain' ),
    		'edit_item'           => __( 'Редактирование новости', 'text_domain' ),
    		'update_item'         => __( 'Update Item', 'text_domain' ),
    		'view_item'           => __( 'Посмотреть', 'text_domain' ),
    		'search_items'        => __( 'Поиск новости', 'text_domain' ),
    		'not_found'           => __( 'Новость не найдена', 'text_domain' ),
    		'not_found_in_trash'  => __( 'Not found in Trash', 'text_domain' ),
    	);
    	$args = array(
    		'label'               => __( 'post_news', 'text_domain' ),
    		'description'         => __( 'Новости', 'text_domain' ),
    		'labels'              => $labels,
    		'supports'            => array( 'title', 'editor', 'page-attributes', ),
    		'taxonomies'          => array( 'category', 'post_tag' ),
    		'hierarchical'        => false,
    		'public'              => true,
    		'show_ui'             => true,
    		'show_in_menu'        => true,
    		'menu_position'       => 5,
    		'show_in_admin_bar'   => true,
    		'show_in_nav_menus'   => true,
    		'can_export'          => true,
    		'has_archive'         => true,
    		'exclude_from_search' => false,
    		'publicly_queryable'  => true,
    		'capability_type'     => 'page',
    	);
    	register_post_type( 'post_news', $args );
    
    }
    
    // Hook into the 'init' action
    add_action( 'init', 'custom_post_type', 0 );
Просмотр 12 ответов — с 1 по 12 (всего 12)
  • проблема с портфолио, а код даете для новостей. как-то нелогично.

    Вот полностью код:

    // Register Custom Post Type
    function custom_post_type() {
    
    	$labels = array(
    		'name'                => _x( 'Новости', 'Post Type General Name', 'text_domain' ),
    		'singular_name'       => _x( 'Новости', 'Post Type Singular Name', 'text_domain' ),
    		'menu_name'           => __( 'Новости', 'text_domain' ),
    		'name_admin_bar'      => __( 'Новости', 'text_domain' ),
    		'parent_item_colon'   => __( 'Parent Item:', 'text_domain' ),
    		'all_items'           => __( 'Все новости', 'text_domain' ),
    		'add_new_item'        => __( 'Добавление записи', 'text_domain' ),
    		'add_new'             => __( 'Добавить новость', 'text_domain' ),
    		'new_item'            => __( 'Новая запись', 'text_domain' ),
    		'edit_item'           => __( 'Редактирование новости', 'text_domain' ),
    		'update_item'         => __( 'Update Item', 'text_domain' ),
    		'view_item'           => __( 'Посмотреть', 'text_domain' ),
    		'search_items'        => __( 'Поиск новости', 'text_domain' ),
    		'not_found'           => __( 'Новость не найдена', 'text_domain' ),
    		'not_found_in_trash'  => __( 'Not found in Trash', 'text_domain' ),
    	);
    	$args = array(
    		'label'               => __( 'post_news', 'text_domain' ),
    		'description'         => __( 'Новости', 'text_domain' ),
    		'labels'              => $labels,
    		'supports'            => array( 'title', 'editor', 'page-attributes', ),
    		'taxonomies'          => array( 'category', 'post_tag' ),
    		'hierarchical'        => false,
    		'public'              => true,
    		'show_ui'             => true,
    		'show_in_menu'        => true,
    		'menu_position'       => 5,
    		'show_in_admin_bar'   => true,
    		'show_in_nav_menus'   => true,
    		'can_export'          => true,
    		'has_archive'         => true,
    		'exclude_from_search' => false,
    		'publicly_queryable'  => true,
    		'capability_type'     => 'page',
    	);
    	register_post_type( 'post_news', $args );
    
    }
    
    // Hook into the 'init' action
    add_action( 'init', 'custom_post_type' );
    
    // Register Custom Post Type
    function custom_post_portfolio() {
    
    	$labelss = array(
    		'name'                => _x( 'Портфолио', 'Post Type General Name', 'text_domain' ),
    		'singular_name'       => _x( 'Портфолио', 'Post Type Singular Name', 'text_domain' ),
    		'menu_name'           => __( 'Портфолио', 'text_domain' ),
    		'name_admin_bar'      => __( 'Портфолио', 'text_domain' ),
    		'parent_item_colon'   => __( 'Parent Item:', 'text_domain' ),
    		'all_items'           => __( 'Все материалы', 'text_domain' ),
    		'add_new_item'        => __( 'Добавление записи', 'text_domain' ),
    		'add_new'             => __( 'Добавить запись', 'text_domain' ),
    		'new_item'            => __( 'Новая запись', 'text_domain' ),
    		'edit_item'           => __( 'Редактирование', 'text_domain' ),
    		'update_item'         => __( 'Update Item', 'text_domain' ),
    		'view_item'           => __( 'Посмотреть', 'text_domain' ),
    		'search_items'        => __( 'Поиск', 'text_domain' ),
    		'not_found'           => __( 'Материалов не найдено', 'text_domain' ),
    		'not_found_in_trash'  => __( 'Not found in Trash', 'text_domain' ),
    	);
    	$argss = array(
    		'label'               => __( 'post_portfolio', 'text_domain' ),
    		'description'         => __( 'Портфолио', 'text_domain' ),
    		'labels'              => $labelss,
    		'supports'            => array( 'title', 'editor', 'page-attributes', ),
    		'taxonomies'          => array( 'category', 'post_tag' ),
    		'hierarchical'        => false,
    		'public'              => true,
    		'show_ui'             => true,
    		'show_in_menu'        => true,
    		'menu_position'       => 10,
    		'show_in_admin_bar'   => true,
    		'show_in_nav_menus'   => true,
    		'can_export'          => true,
    		'has_archive'         => true,
    		'exclude_from_search' => false,
    		'publicly_queryable'  => true,
    		'capability_type'     => 'page',
    	);
    	register_post_type( 'post_portfolio', $argss );
    
    }
    
    // Hook into the 'init' action
    add_action( 'init', 'custom_post_portfolio' );

    пустая страница вообще пустая, то есть белый экран?
    тогда у вас банально ошибка в синтаксисе шаблона.
    в любом случае — код вывода тоже приведите.

    так я нашёл проблему, и удачно её решил, теперь стал другой вопрос.
    Почему категории (Рубрики) общие, а не для каждой записи свои категории? В чем может быть проблема, код тот же что и был…

    во-первых — как решили проблему? чтобы кто из поиска зайдет — знал.

    во-вторых, а вы создали шаблон архива для ваших произвольных записей?

    вы сами указали в таксономиях category — вот они и общие.

    Решил проблему так: переменные $labels и $args изменил $labelss и $argss, ну или что-то типо того, кто как хочет. После зашел в Настройки, Постоянные ссылки, Произвольно, вставить /%postname% и Сохранить.

    А вот как сделать что бы категории для каждой записи были свои я не знаю…если можно расписать поподробнее.

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

    ‘taxonomies’ => array( ‘category’, ‘post_tag’ ) Удалять?

    да
    стройте таксономию с указанием типа записи.

    [офтоп]

    переменные $labels и $args изменил $labelss и $argss, ну или что-то типо того, кто как хочет

    В кодинге чего бы то ни было а)нельзя называть свои переменные зарезервированными (стандартными) словами. б) хорошим тоном считается использование своих префиксов ($udu_labels).
    [/офтоп]

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Решил проблему так: переменные $labels и $args изменил $labelss и $argss, ну или что-то типо того, кто как хочет. После зашел в Настройки, Постоянные ссылки, Произвольно, вставить /%postname% и Сохранить.

    Имена переменных в данном случае не важны, т.к. они используются только в рамках функции. Скорее всего, не хватало последнего действия (после добавления нового типа записей или таксономии нужно пересохранить структуру ссылок).

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

    А кто знает как удалить slug для произвольного типа записей из URL?
    Я пробовал таким кодом, но тоже лажа какая то получается:

    function remove_slug( $post_link, $post, $leavename ) {
    if ( 'products' != $post->post_type || 'publish' != $post->post_status ) {
    return $post_link;
    }
    $post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
    return $post_link;
    }
    add_filter( 'post_type_link', 'remove_slug', 10, 3 );
    function parse_request( $query ) {
    if ( ! $query->is_main_query() )
    return;
    
    if ( 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
    return;
    }
    
    if ( ! empty( $query->query['name'] ) ) {
    $query->set( 'post_type', array( 'post', 'products', 'page' ) );
    }
    }
    add_action( 'pre_get_posts', 'parse_request' );

    Ставлю для новостей, нормально, меняю значения, дабы избежать конфликта в функции и ставлю для портфолио, и вуаля, работает тоже, но вот новости перестают выводится в своём шаблоне, пересохраняю постоянные ссылки, ноль эффекта…может кто знает как решить проблему?
    Ошибок не выдаёт, убираю код с портфолио и новости опять начинают работать…

Просмотр 12 ответов — с 1 по 12 (всего 12)
  • Тема «Cвой тип записи!Не работает шаблон» закрыта для новых ответов.