Wordpress: функция для замены содержимого для пользовательского статуса сообщения - PullRequest
1 голос
/ 28 апреля 2020

Я создал пользовательский статус сообщения «заблокирован» через register_post_status (например, register_post_status не показывает post_status в раскрывающемся списке статуса ).

Теперь я хочу заменить содержимое сообщений с этим статусом через функции . php.

Я пробовал что-то подобное

function block_by_status ($post_object) {
     global $wp_query;
     if( 'blocked' == $wp_query->post->post_status ) {
         return 'This post is blocked';
     }
}

add_action('the_post','block_by_status');

Но это не работает, пожалуйста, кто-нибудь поможет?

1 Ответ

0 голосов
/ 28 апреля 2020

Так что для контента вы можете сделать что-то простое:

add_filter('the_content', 'block_by_status');

и скрыть заголовок, который вы можете использовать:

add_filter( 'the_title', 'block_by_status', 10, 2 );

Если вы хотите go дальше кроме того, я предлагаю отредактировать шаблон в папке темы.

Для страниц, которые вам нужно отредактировать page.php, а для постов вам нужно отредактировать posts.php или singular.php, в зависимости от используемой темы .

Таким образом, вы можете сделать что-то вроде этого:

В файле functions.php:

function block_by_status ($post_object) {
     global $wp_query;
     if( 'blocked' == $wp_query->post->post_status ) {
         return true;
     }
}

, а затем в файлах, на которые я ссылался выше (Зависит от вашей темы ):

<?php if (!block_by_status()) { ?>
    <?php while (have_posts()) : the_post(); ?>
        <h1><?php the_title() ?></h1>
        <?php the_content() ?>
        <?php get_sidebar() ?>
    <?php endwhile; ?>
<?php } else {
    echo 'This post is blocked';
} ?>

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...