Вопрос или проблема
Я хочу скрыть или удалить пользовательский статус поста, когда он установлен на определенное значение.
например,
Если у меня есть пост со статусом “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» должны быть скрыты.
Решение проблемы
-
Определение текущего статуса записи: Ваш код должен сначала определить текущий статус записи. Это можно сделать с помощью функции
get_post_status()
. -
Использование CSS для скрытия элементов: После определения текущего статуса записи, вы можете использовать CSS для скрытия нежелательных вариантов в выпадающем списке статусов. Это будет сделано с помощью PHP-кода, который внедряет стили непосредственно в заголовок админки.
-
Ошибка в коде: В изначальной версии вашего кода есть некоторые ошибки, такие как дублирование определения скрытых статусов. Убедитесь, что все элементы и переменные правильно определены.
Пример кода
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');
Шаги для добавления кода:
-
Откройте редактор тем в WordPress: Перейдите в «Внешний вид» > «Редактор тем» и выберите файл
functions.php
. -
Добавьте код: Вставьте приведенный выше код в файл
functions.php
. -
Сохраните изменения: Нажмите на «Обновить файл» для сохранения изменений.
Заключение
Таким образом, вы можете управлять отображением пользовательских статусов записей в WordPress через несложные изменения в коде. Это решение помогает упростить процесс управления пользовательскими статусами, улучшая эффективность работы с вашими публикациями. Не забывайте протестировать изменения в безопасной среде перед их внедрением на рабочем сайте, чтобы избежать неожиданных сбоев.
Если у вас есть дальнейшие вопросы или требуется дополнительная помощь в программировании, рассмотрите возможность обращения к специалисту по WordPress для более глубокой оптимизации вашего сайта.