Игнорирование выдержки из руководства для пользовательского типа записи

Вопрос или проблема

Я настроил некоторые пользовательские типы записей с помощью 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(); ?> &nbsp; ></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.

Основные моменты:

  1. Правильное определение пользовательского типа записей:
    Убедитесь, что вы правильно регистрируете свой пользовательский тип записей и что он действительно поддерживает аннотации. Для этого необходимо указать параметр 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'
           )
       );
    }
  2. Использование правильных функций:
    Вы используете стандартные функции get_the_excerpt() и the_excerpt(), что является правильным подходом. Убедитесь, что вы вызываете их после установки глобальной переменной $post через setup_postdata($post).

  3. Отладка:
    Если аннотации все еще не отображаются как ожидалось, рекомендуется проверить:

    • Использование get_posts() и последующий вызов setup_postdata() действительно возвращает нужные записи.
    • Исправность данных аннотаций в редакторе. Убедитесь, что для ваших записей не заданы пустые аннотации.
  4. Кэширование:
    В некоторых случаях кэшированные данные могут помешать отображению актуальных аннотаций. Попробуйте очистить кэш (как на уровне браузера, так и на уровне сервера при использовании плагинов кэширования).

Заключение:

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

Оцените материал
Добавить комментарий

Капча загружается...