Поддержка Проблемы и решения не работает page.php

  • не подскажите, по какой причине может не срабатывать шаблон page.php для страниц? все время используется index.php.

    вроде по иерархии шаблонов page.php всегда идет выше index.php, а вот что-то не получается.

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • Модератор Yuri

    (@yube)

    Ну, барин, ты задачи ставишь 🙂 Я ж так понимаю, что это не тот случай, когда «выводится не страница». Всё по-взрослому, да? Могу предположить наличие русской буквы или какого-то невидимого символа в имени файла. Хотя обычно такая беда случается с файлами и переменным на букву «с».

    да не, я из дефолтных тем пробовал и page.php и content-page.php копировать — все равно не хотят 🙁

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

    Модератор Yuri

    (@yube)

    Ну тогда только вскрытие. В смысле вывод всего подряд внутри функций get_page_template(), locate_template() и т.д. и т.п.

    плин, скопировал свою тему на тестовый сайт, чтобы избежать влияния плагинов — такая же хрень, работает только index.php для страниц и сам контент страниц не выводится. бред какой-то.

    выяснил, что это из-за кода плагина «Custom Post Type Generator».

    вот что тут не так то?

    
    /**
    * Register Custom Post Types and Custom taxonomies.
    *
    * from Custom Post Type Generator Plugins.
    */
    
    add_action( 'init', 'cptg_custom_post_types' );
    function cptg_custom_post_types()
    {
    	$labels = array(
    		'name' => 'Фильмы',
    		'singular_name' => 'Фильмы',
    		'menu_name' => 'Фильмы',
    		'name_admin_bar' => 'Фильмы',
    		'all_items' => 'Все фильмы',
    		'add_new' => 'Добавить новый',
    		'add_new_item' => 'Добавить фильм',
    		'edit_item' => 'Редактировать фильм',
    		'new_item' => 'Новый фильм',
    		'view_item' => 'Просмотреть фильм',
    		'search_items' => 'Поиск фильмов',
    		'not_found' =>  'Фильмов не найдено',
    		'not_found_in_trash' => 'Фильмов в корзине не найдено',
    		'parent_item_colon' => 'Parent Page',
    	);
    	$args = array(
    		'labels' => $labels,
    		'description' => 'фильм или сериал',
    		'public' => true,
    		'exclude_from_search' => false,
    		'publicly_queryable' => true,
    		'show_ui' => true,
    		'show_in_nav_menus' => true,
    		'show_in_menu' => true,
    		'show_in_admin_bar' => true,
    		'has_archive' => true,
    		'menu_position' => null,
    		'menu_icon' => 'dashicons-video-alt3',
    		'hierarchical' => false,
    		'rewrite' => array( 'slug' => 'movie','with_front' => true,'feeds' => true,'pages' => true ),
    		'query_var' => true,
    		'can_export' => true,
    		'supports' => array( 'title','author','custom-fields','comments','revisions' ),
    	);
    	register_post_type( 'movie', $args );
    	$labels = array(
    		'name' => 'Страны',
    		'singular_name' => 'Страны',
    		'menu_name' => 'Страны',
    		'all_items' => 'Все страны',
    		'edit_item' => 'Изменить страну',
    		'view_item' => 'Просмотреть страну',
    		'update_item' => 'Обновить страну',
    		'add_new_item' => 'Добавить новую страну',
    		'new_item_name' => 'Название новой страны',
    		'parent_item' => 'Родительская рубрика',
    		'parent_item_colon' =>  'Родительская рубрика',
    		'search_items' => 'Поиск стран',
    		'popular_items' => 'Популярные страны',
    		'separate_items_with_commas' => 'Страны разделяются запятыми',
    		'add_or_remove_items' => 'Добавить или удалить метки',
    		'choose_from_most_used' => 'Выбрать из часто используемых стран',
    		'not_found' => 'Стран не найдено.',
    	);
    	$args = array(
    		'labels' => $labels,
    		'public' => true,
    		'show_ui' => true,
    		'show_in_nav_menus' => true,
    		'show_tagcloud' => true,
    		'meta_box_cb' => null,
    		'show_admin_column' => false,
    		'hierarchical' => false,
    		'query_var' => true,
    		'rewrite' => array( 'slug' => 'country','with_front' => true,'hierarchical' => false, ),
    		'sort' => false,
    	);
    	register_taxonomy( 'country', array( 'movie' ) , $args );
    	$labels = array(
    		'name' => 'Год выпуска',
    		'singular_name' => 'Год выпуска',
    		'menu_name' => 'Год выпуска',
    		'all_items' => 'Все года',
    		'edit_item' => 'Изменить год',
    		'view_item' => 'Просмотреть год',
    		'update_item' => 'Обновить год',
    		'add_new_item' => 'Добавить новый год',
    		'new_item_name' => 'Название нового года',
    		'parent_item' => 'Родительская рубрика',
    		'parent_item_colon' =>  'Родительская рубрика',
    		'search_items' => 'Поиск годов',
    		'popular_items' => 'Популярные года',
    		'separate_items_with_commas' => 'Года разделяются запятыми',
    		'add_or_remove_items' => 'Добавить или удалить года',
    		'choose_from_most_used' => 'Выбрать из часто используемых годов',
    		'not_found' => 'Годов не найдено.',
    	);
    	$args = array(
    		'labels' => $labels,
    		'public' => true,
    		'show_ui' => true,
    		'show_in_nav_menus' => true,
    		'show_tagcloud' => true,
    		'meta_box_cb' => null,
    		'show_admin_column' => false,
    		'hierarchical' => false,
    		'query_var' => true,
    		'rewrite' => array( 'slug' => 'year','with_front' => true,'hierarchical' => false, ),
    		'sort' => false,
    	);
    	register_taxonomy( 'year', array( 'movie' ) , $args );
    	$labels = array(
    		'name' => 'Жанры',
    		'singular_name' => 'Жанры',
    		'menu_name' => 'Жанры',
    		'all_items' => 'Все жанры',
    		'edit_item' => 'Изменить жанр',
    		'view_item' => 'Просмотреть жанр',
    		'update_item' => 'Обновить жанр',
    		'add_new_item' => 'Добавить новый жанр',
    		'new_item_name' => 'Название нового жанра',
    		'parent_item' => 'Родительская рубрика',
    		'parent_item_colon' =>  'Родительская рубрика',
    		'search_items' => 'Поиск жанров',
    		'popular_items' => 'Популярные жанры',
    		'separate_items_with_commas' => 'Жанры разделяются запятыми',
    		'add_or_remove_items' => 'Добавить или удалить жанры',
    		'choose_from_most_used' => 'Выбрать из часто используемых жанров',
    		'not_found' => 'Жанров не найдено.',
    	);
    	$args = array(
    		'labels' => $labels,
    		'public' => true,
    		'show_ui' => true,
    		'show_in_nav_menus' => true,
    		'show_tagcloud' => true,
    		'meta_box_cb' => null,
    		'show_admin_column' => false,
    		'hierarchical' => false,
    		'query_var' => true,
    		'rewrite' => array( 'slug' => 'genre','with_front' => true,'hierarchical' => false, ),
    		'sort' => false,
    	);
    	register_taxonomy( 'genre', array( 'movie' ) , $args );
    }
    
    add_action( 'after_switch_theme', 'cptg_rewrite_flush' );
    function cptg_rewrite_flush()
    {
    	flush_rewrite_rules();
    }
    

    все работает — кроме страниц. бесконечные переключения тем и обновления постоянных ссылок не помогают.

    Мне почему то кажется что дело в этом параметре

    'rewrite' => array( ...., 'hierarchical' => false, ),

    но могу ошибаться, как решите проблему отпишитесь пожалуйста.

    • Ответ изменён 5 лет, 12 месяцев назад пользователем Riskful.

    да не, что-то не выходит.

    Заинтриговал, сейчас локальный веб сервер включу попробую.

    Погоди, так ты точно страницы выводишь, а не страницу с кастомной записью?

    • Ответ изменён 5 лет, 12 месяцев назад пользователем Riskful.

    страница с кастомной записью тут выводится через single-movie.php, в котором подгружается content-movie.php, поэтому я абсолютно точно уверен.

    https://i.paste.pics/d9d05bb40a35c5e7432afe902b2c4244.png

    Вставил твой код в functions.php в стандартную twentyseventeen и все работает. Мне кажется у тебя шаблон какой то создан который перебивает page.php
    Если хочешь можем попытаться решить проблему вместе дай свой скайп или другой мессенджер чтобы тут не устраивать чат.

    спасибо Riskful за то, что сразу нашел то, чего я бы в жизни не заметил. ярлык таксономии, оказывается, не может быть «year» — видимо, зарезервированное слово. почему при этом не работали только страницы — для меня секрет.

    оказывается, не может быть «year» — видимо, зарезервированное слово

    https://codex.wordpress.org/Reserved_Terms
    Хотя слаг.. Мб в данном случае имелся конфликт с существующими.

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

Просмотр 14 ответов — с 1 по 14 (всего 14)
  • Тема «не работает page.php» закрыта для новых ответов.