Вопрос или проблема
Я настроил некоторые пользовательские типы записей с помощью Pods, но не могу заставить его отображать мой ручной отрывок. С обычными записями все работает нормально.
Я пытался отображать его с помощью echo get_the_excerpt() и the_excerpt(). Я также пробовал использовать get_posts() и setup_postdata(). Я также пробовал стандартный цикл WP_Query.
Несмотря на все мои усилия, он просто отображает автоматически сгенерированный отрывок.
Есть идеи?
<?php
$posts = get_posts(array(
'post_type' => 'press-release'
));
foreach ($posts as $i => $post) {
setup_postdata($post); ?>
<div class="row press appear" on-visible="{class: 'visible'}">
<div class="columns small-3">
<p class="date"><?php echo get_the_date('M j Y'); ?></p>
</div>
<div class="columns small-9">
<h2><a target="_blank" href="https://wordpress.stackexchange.com/questions/182859/<?php echo get_the_permalink(); ?>"><?php the_title(); ?> ></a></h2>
<div class="excerpt"><?php the_excerpt(); ?></div>
</div>
</div>
<?php
} ?>
Ок, я понял. Мой пользовательский тип записи назывался press_release, а не press-release, и вместо того, чтобы не возвращать результаты, WordPress возвращал какую-то произвольную коллекцию результатов, которые были сломаны странным образом.
Когда вы используете функцию register_post_type
, вам нужно включить поддержку отрывков:
add_action( 'init', 'press_release_post_type' );
function press_release_post_type() {
register_post_type( 'press_release',
array(
'labels' => array(
'name' => __( 'Пресс-релиз', '$text_domain' ),
'singular_name' => __( 'Пресс-релиз', '$text_domain' ),
),
'has_archive' => true,
'hierarchical' => true,
'public' => true,
'rewrite' => array( 'slug' => 'press_release', 'with_front' => false ),
'supports' => array( 'title', 'excerpt' ),
)
);
}
supports
Псевдоним для вызова add_post_type_support() напрямую.
Ответ или решение
Вопрос, который вы подняли, касается отображения пользовательских аннотаций (excerpt) для ваших пользовательских типов записей (custom post types) в WordPress. Вы отметили, что аннотации для обычных записей работают исправно, однако для вашего пользовательского типа записей возникли проблемы.
Первый шаг в решении данной проблемы — убедиться, что для вашего пользовательского типа записей правильно заданы параметры. В вашем случае вы упомянули, что первоначально использовали неправильное название типа: press-release
, не совпадающее с определенным вами именем press_release
.
Основные моменты:
-
Правильное определение пользовательского типа записей:
Убедитесь, что вы правильно регистрируете свой пользовательский тип записей и что он действительно поддерживает аннотации. Для этого необходимо указать параметрsupports
в функцииregister_post_type()
.Пример правильного кода:
add_action( 'init', 'press_release_post_type' ); function press_release_post_type() { register_post_type( 'press_release', array( 'labels' => array( 'name' => __( 'Press Release', '$text_domain' ), 'singular_name' => __( 'Press Release', '$text_domain' ), ), 'has_archive' => true, 'hierarchical' => true, 'public' => true, 'rewrite' => array( 'slug' => 'press_release', 'with_front' => false ), 'supports' => array( 'title', 'excerpt' ), // Обязательно включайте 'excerpt' ) ); }
-
Использование правильных функций:
Вы используете стандартные функцииget_the_excerpt()
иthe_excerpt()
, что является правильным подходом. Убедитесь, что вы вызываете их после установки глобальной переменной$post
черезsetup_postdata($post)
. -
Отладка:
Если аннотации все еще не отображаются как ожидалось, рекомендуется проверить:- Использование
get_posts()
и последующий вызовsetup_postdata()
действительно возвращает нужные записи. - Исправность данных аннотаций в редакторе. Убедитесь, что для ваших записей не заданы пустые аннотации.
- Использование
-
Кэширование:
В некоторых случаях кэшированные данные могут помешать отображению актуальных аннотаций. Попробуйте очистить кэш (как на уровне браузера, так и на уровне сервера при использовании плагинов кэширования).
Заключение:
Правильная регистрация пользовательского типа записей с поддержкой аннотаций окажет решающее влияние на успешное отображение. Убедитесь, что код корректен, и при необходимости используйте отладку для выявления проблем. Следуя приведенным рекомендациям, вы сможете устранить проблему с отображением аннотаций вашей пользовательской записи.