Скрыть или удалить пользовательский статус сообщения

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

Я хочу скрыть или удалить пользовательский статус поста, когда он установлен на определенное значение.

например,
Если у меня есть пост со статусом “pendingreviewf”, я хочу скрыть возможность изменить его на статусы “shipedf” и “pricenotaxf”.
Я использую плагин PublishPress для создания пользовательского статуса.

Код на данный момент:

function adminstage1() {

    if ( ! function_exists( 'PublishPress' ) )
        return;

    if ( ! PublishPress()->custom_status->is_whitelisted_page() )
        return;

    $hide_post_status = array( 'pendingreviewf' );
    if ( ! in_array( get_post_status(), $hide_post_status) ) {

        ?>
        <style>
            #post_status option[value="shipedf"] {
                display: none;
            }
            #post_status option[value="shipedf"] {
                display: none;
            }

        </style>
        <?php
    }
}
add_action( 'admin_head', 'adminstage1' );

Я знаю, что это неаккуратный код и, возможно, совсем не имеет смысла, но я его включил, чтобы показать вам мои навыки программирования, которые ниже начального уровня.
Любая помощь приветствуется.

Я нашел решение, которое искал. Если кому-то в будущем понадобится ответ на тот же вопрос, я оставляю ответ.

Чтобы сделать так, чтобы пост со статусом “Status1” показывал только “Status2” и скрывал другие статусы, такие как “Status3” и “Status4” (с помощью CSS):

 function hidepoststatus() {

$post="Status1";
    global $post;

if ( $post->post_status == 'Status1' ) {

       ?>

<style>

#post_status option[value="Status3"] {
display: none;
}

    #post_status option[value="Status4"] {
display: none;
}

</style>

<?php

  }
}
add_action( 'admin_head', 'hidepoststatus' );

Ответ или решение

Скрытие или удаление пользовательских статусов записей в WordPress, особенно с использованием плагина, такого как PublishPress, может показаться сложной задачей, особенно если ваши навыки программирования находятся на начальном уровне. Однако, с правильным подходом, это можно сделать довольно просто через манипуляцию с CSS в админке WordPress. Рассмотрим, как это можно реализовать пошагово.

Описание задачи

Необходимо скрыть или удалить определенные пользовательские статусы записей в WordPress, когда запись имеет конкретный статус. Например, если статус записи установлен на «pendingreviewf», опции изменения статуса на «shipedf» и «pricenotaxf» должны быть скрыты.

Решение проблемы

  1. Определение текущего статуса записи: Ваш код должен сначала определить текущий статус записи. Это можно сделать с помощью функции get_post_status().

  2. Использование CSS для скрытия элементов: После определения текущего статуса записи, вы можете использовать CSS для скрытия нежелательных вариантов в выпадающем списке статусов. Это будет сделано с помощью PHP-кода, который внедряет стили непосредственно в заголовок админки.

  3. Ошибка в коде: В изначальной версии вашего кода есть некоторые ошибки, такие как дублирование определения скрытых статусов. Убедитесь, что все элементы и переменные правильно определены.

Пример кода

function hide_specific_post_statuses() {
    global $post;

    if (!isset($post)) return;

    // Определение статуса, для которого нужно скрыть другие статусы
    $currentStatus = 'pendingreviewf';

    if ($post->post_status === $currentStatus) {
        ?>
        <style>
            #post_status option[value="shipedf"],
            #post_status option[value="pricenotaxf"] {
                display: none;
            }
        </style>
        <?php
    }
}
add_action('admin_head', 'hide_specific_post_statuses');

Шаги для добавления кода:

  1. Откройте редактор тем в WordPress: Перейдите в «Внешний вид» > «Редактор тем» и выберите файл functions.php.

  2. Добавьте код: Вставьте приведенный выше код в файл functions.php.

  3. Сохраните изменения: Нажмите на «Обновить файл» для сохранения изменений.

Заключение

Таким образом, вы можете управлять отображением пользовательских статусов записей в WordPress через несложные изменения в коде. Это решение помогает упростить процесс управления пользовательскими статусами, улучшая эффективность работы с вашими публикациями. Не забывайте протестировать изменения в безопасной среде перед их внедрением на рабочем сайте, чтобы избежать неожиданных сбоев.

Если у вас есть дальнейшие вопросы или требуется дополнительная помощь в программировании, рассмотрите возможность обращения к специалисту по WordPress для более глубокой оптимизации вашего сайта.

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

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