#wordpress
#wordpress
Вопрос:
Итак, согласно этой странице, в нем говорится:
single-{post_type}.php
Если ваш пользовательский тип сообщения был ‘product’ и /или query_var = «product», WordPress будет искать single-product.php для отображения единственной или постоянной ссылки на сообщение.
Итак, у меня есть этот код в моем functions.php:
register_post_type( 'project',$args);
И у меня есть этот шаблон: single-project.php
Тогда почему мой пользовательский пост не использует этот шаблон?
Обновить
Используя get_post_types()
, я вижу, что мой тип сообщения отсутствует в списке. Если он не зарегистрирован, то почему я могу создавать и удалять пользовательские сообщения?
add_action('after_setup_theme','init_setup');
function init_setup() {
add_action( 'init', 'create_post_type' );
}
function create_post_type() {
$args = array(
'labels' => array(
'name' => __( 'Prosjekter' ),
'singular_name' => __( 'Prosjekt' ),
'add_new' => __('Nytt prosjekt')
),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'has_archive' => false,
'taxonomies' => array('category'),
'menu_position' => 5,
'supports' => array( 'title', 'editor', 'thumbnail', 'page-attributes','post_tag' ),
'rewrite' => array('slug' => 'prosjekt')
);
register_post_type( 'project',$args);
}
Ответ №1:
Из Кодекса:
register_post_type следует вызывать только с помощью действия ‘init’. Он вообще не будет работать, если вызывается до ‘init’, а аспекты нового типа записей будут работать неправильно, если будут вызваны позже.
Вы пробовали зарегистрировать его таким образом?
add_action( 'init', 'create_post_type' ); // NOT inside `init_setup()`
[править]
Единственное, что я могу придумать, это то, что, поскольку вы используете rewrite
, вы можете захотеть удалить правила перезаписи. Также из Кодекса:
Примечание: Если вы регистрируете тип записи внутри плагина, вызовите flush_rewrite_rules() в своем хуке активации и деактивации (см. Сброс перезаписи при активации ниже). Если функция flush_rewrite_rules() не используется, вам придется вручную перейти в Настройки> Постоянные ссылки и обновить структуру постоянных ссылок, прежде чем ваш пользовательский тип записи отобразит правильную структуру.
Если вы не хотите возиться с flush_rewrite_rules()
функцией в данный момент, просто зайдите в Настройки > Постоянные ссылки и повторно сохраните настройки постоянных ссылок.
Комментарии:
1. @Steven Я обновил свой ответ другим возможным решением
2. Блестяще. Я удалил повторную запись и установил постоянную ссылку на «Название публикации», и теперь это работает. Спасибо 😀
3. @Steven Отлично! Получайте удовольствие.