как удалить выдержку на странице архива категории в Genesis framework? - PullRequest
1 голос
/ 20 июня 2020

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

В настоящее время я безуспешно пытаюсь выполнить приведенный ниже код?

есть ли у кого-нибудь предложения?

  add_action ( 'genesis_before_entry' , 'designody_remove_entry_content_archives' );
function designody_remove_entry_content_archives() {
if (in_category('5')) {
remove_action( 'genesis_entry_content', 'genesis_do_post_content' );
}
}

мое второе решение ... тоже не работает

function replace_content( $output) {
if (is_category('5')) {
return '' ;
}
}
add_filter( 'get_the_excerpt', 'replace_content' );

1 Ответ

0 голосов
/ 20 июня 2020

У меня нет полностью удовлетворительного решения c для Genesis, и мне было бы любопытно узнать, что говорит сама StudioPress, но у меня есть решения WordPress.

Во-первых, чтобы использовать Хук Genesis и условие, вам нужно обернуть его в функцию:

Процитируем Кодекс: «Предупреждение: вы можете использовать теги условного запроса только после хука действия posts_selection в WordPress (хук действия wp - это первый, с помощью которого вы можете использовать эти условные выражения). Для тем это означает, что условный тег никогда не будет работать должным образом, если вы используете его в теле функций. php, т.е. вне функции. "

https://codex.wordpress.org/Conditional_Tags

Следующие действия позволяют удалить отрывок на указанной странице архива категории:

add_action( 'loop_start', 'remove_content_on_category_pages' ) ; 

function remove_content_on_category_pages() {

    if ( is_category( '5' ) ) {

        remove_action( 'genesis_entry_content', 'genesis_do_post_content' );

    }

}

Однако условие in_category() - что должно помочь с содержанием записи, когда оно появляется в других архивах (категории, блог и т. д. c.) - похоже, не работает.

Чтобы получить желаемые результаты, как я их понимаю - нет размещать контент, в этой реализации «отрывок», для этой категории на любой странице архива, но с сохранением его для отдельных сообщений - вы можете вернуться к надежному the_content filter, но обратите внимание, что the_content может быть сложным и мощный инструмент, подверженный неожиданным побочным эффектам. Тем не менее, на ванильной установке Genesis были выполнены следующие тесты:

add_filter( 'the_content', 'test_gen_content' ) ;

function test_gen_content( $content ) {
    
    /**
    apply to all secondary queries don't apply if single page or post, or in 
    admin, otherwise obliterate - can use is_single() instead of is_singular()
    if only posts are at issue 
    **/
    if ( ! is_singular() && ! is_admin() && in_category( '157' ) ) {
    
        return '' ;
        
    }
    
    return $content ;
    
}

Однако я должен сказать, что, учитывая особенности и сложности структуры Genesis, а также особенности запроса, в дикой природе я был бы очень соблазнен использовать клудж CSS, сформированный в соответствии с требованиями - по крайней мере, без прямой инструкции или вмешательства со стороны знатока Genesis или самого StudioPress. Я не могу сказать, нужно ли вам доработать CSS в соответствии с вашей конкретной установкой, но на самом деле это могло бы быть намного проще, если бы затем отсортировать PHP даже с правильными крючками и c.

//substitute appropriate category slug for "development-forums"
.home .category-development-forums .entry-content,
.blog .category-development-forums .entry-content,
.archive .category-development-forums .entry-content
{
    display: none;
} 
...