Как изменить статус страницы с опубликованной на черновик и обратно

19 мар. 2011 г., 22:58:05
Просмотры: 52.1K
Голосов: 12

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

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

Я нашел такое утверждение

Чтобы изменить статус записи, вы получаете запись, меняете поле статуса, затем вызываете wp_update_post с обновленным объектом записи

Ближайший существующий плагин - это http://wordpress.org/extend/plugins/wp-hide-pages/, но этот плагин использует wp-list-pages. И он только скрывает страницы, а не переводит их фактически из статуса Опубликовано в Черновик.

0
Все ответы на вопрос 2
3
29

Более быстрое решение:

$post = array( 'ID' => $post_id, 'post_status' => $status );
wp_update_post($post);

Таким образом, вам не нужно получать запись.

6 апр. 2013 г. 01:45:40
Комментарии

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

Kirby Kirby
10 нояб. 2015 г. 21:37:44

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

TARKUS TARKUS
2 июн. 2021 г. 22:29:15

@TARKUS вам нужно изменить $status на 'draft'

Nathan Nathan
17 июл. 2021 г. 09:58:33
7
17

Вот функция для изменения статуса записи

/*
$post_id - ID записи, которую нужно изменить.
$status -  Статус записи: publish|pending|draft|private|static|object|attachment|inherit|future|trash.
*/
function change_post_status($post_id,$status){
    $current_post = get_post( $post_id, 'ARRAY_A' );
    $current_post['post_status'] = $status;
    wp_update_post($current_post);
}

Просто вызовите функцию и передайте ID записи и новый желаемый статус, например:

change_post_status(12,'private');
20 мар. 2011 г. 00:29:56
Комментарии

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

User User
20 мар. 2011 г. 00:50:50

Ты же знаешь, что для этого уже есть выпадающий список на экране редактирования?

Bainternet Bainternet
20 мар. 2011 г. 02:15:07

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

User User
20 мар. 2011 г. 03:53:19

обновите ваш вопрос с кодом, который у вас есть, и я лучше пойму, чем могу помочь.

Bainternet Bainternet
20 мар. 2011 г. 03:59:20

У меня не намного больше кода, чем то, что вы мне предоставили... Вообще-то я не умею разрабатывать код, но обычно могу что-то подправить, если это близко к тому, что я хочу сделать... В основном мне нужна страница настроек, которая позволяет мне указать ID конкретной страницы и дать администратору возможность выбрать публикацию или черновик для каждой указанной страницы, затем нажать сохранить (или обновить) и установить статус каждой страницы согласно конфигурации пользователя. Я бы хотел научиться это делать, но чувствую, что, возможно, прошу слишком многого для бесплатного форума поддержки..?

User User
20 мар. 2011 г. 04:11:00

Я только что обновил свой вопрос, чтобы вам было понятнее, что я пытаюсь сделать

User User
20 мар. 2011 г. 04:26:14

@Brainternet какой хук я должен использовать в этом случае?

Prafulla Kumar Sahu Prafulla Kumar Sahu
4 дек. 2015 г. 10:39:03
Показать остальные 2 комментариев