Функция для замены отображения контента для пользовательского типа сообщения
Я пытался создать функцию для замены отображения содержимого для пользовательской темы сообщения WordPress Storefront, но условия не работали! Комментарии, если я пытался.
//if (is_singular() && (get_post_type() == 'gallery')) {
add_action( 'init', 'customise_storefront' );
//}
function customise_storefront() {
//if(get_post_type( $post->ID ) == 'gallery'){
//if('gallery'== get_post_type()) {
//if (is_singular('gallery')) {
//if (is_single('gallery')) {
//if (is_singular() && (get_post_type() == 'gallery')) {
// Remove the storefromt post content function
remove_action( 'storefront_single_post', 'storefront_post_content', 30 );
remove_action( 'storefront_loop_post', 'storefront_post_content', 30 );
// Add our own custom function
add_action( 'storefront_single_post', 'gallery_post_content', 30 );
add_action( 'storefront_loop_post', 'gallery_post_content', 30 );
//}
}
/* Gallery post content*/
if ( ! function_exists( 'gallery_post_content' ) ) {
function gallery_post_content() {
?>
<div class="entry-content" itemprop="articleBody">
<?php
the_content(
sprintf(
__( 'Continue reading %s', 'storefront' ),
'<span class="screen-reader-text">' . get_the_title() . '</span>'
)
);
wp_link_pages( array(
'before' => '<div class="page-links">' . __( 'Pages:', 'storefront' ),
'after' => '</div>',
) );
?>
</div><!-- .entry-content -->
<?php
2 ответа
add_action( 'template_redirect', 'customise_storefront' );
function customise_storefront() {
if (is_singular('gallery')) {
// Remove the storefromt post content function
remove_action( 'storefront_single_post', 'storefront_post_content', 30 );
remove_action( 'storefront_loop_post', 'storefront_post_content', 30 );
// Add our own custom function
add_action( 'storefront_single_post', 'gallery_post_content', 30 );
add_action( 'storefront_loop_post', 'gallery_post_content', 30 );
}
}
/* Gallery post content*/
if ( ! function_exists( 'gallery_post_content' ) ) {
function gallery_post_content() {
?>
<div class="entry-content" itemprop="articleBody">
<?php
the_content(
sprintf(
__( 'Continue reading %s', 'storefront' ),
'<span class="screen-reader-text">' . get_the_title() . '</span>'
)
);
wp_link_pages( array(
'before' => '<div class="page-links">' . __( 'Pages:', 'storefront' ),
'after' => '</div>',
) );
?>
</div><!-- .entry-content -->
<?php
}
}
Вы подключаете свое действие к init. На данный момент нет доступных данных, поэтому ваши тесты if не пройдены. Попробуйте использовать более позднюю ловушку после загрузки данных поста, например
add_action('the_post','customise_storefront');
Вам также следует включить глобальную ссылку $ post в начале customise_storefront, если вы собираетесь попробовать получить доступ к объекту $ post там.
Хотя если вы используете хук the_post, он все равно передает объект post по ссылке, так что вы можете изменить его на:
function customise_storefront ($post_object) {
if (get_post_type ($post_object->ID) ...
Смотрите https://codex.wordpress.org/Plugin_API/Action_Reference/the_post