Come aggiornare lo stato della pagina da pubblicato a bozza e da bozza a pubblicato

19 mar 2011, 22:58:05
Visualizzazioni: 52.1K
Voti: 12

Sto cercando di capire come scrivere il codice che mi permetterà di fare quanto segue con le pagine di un blog WordPress.

Ho bisogno di avere qualcosa dove specificare quali ID di pagina voglio elencare (circa 15 in totale) e poi dare all'utente la possibilità di selezionare quali saranno pubblicate o quali saranno bozze. Questo le rimuoverà dal menu e rimuoverà anche la pagina dal sito.

Ho trovato questa dichiarazione

Per modificare lo stato di un post, ottieni il post, cambia il suo campo status, quindi chiama wp_update_post con il nuovo oggetto post

Il plugin esistente più simile è http://wordpress.org/extend/plugins/wp-hide-pages/ eccetto che questo plugin usa wp-list-pages. E, si limita a nasconderle e non le sposta effettivamente da Pubblicato a Bozza.

0
Tutte le risposte alla domanda 2
3
29

Una soluzione più veloce è:

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

In questo modo non devi recuperare il post.

6 apr 2013 01:45:40
Commenti

Sì, una soluzione più veloce e semplice. Inoltre, si preoccuperà solo di scrivere l'aggiornamento dello stato e non dovrà preoccuparsi di ri-aggiornare o ignorare tutti gli altri dati recuperati nel post corrente

Kirby Kirby
10 nov 2015 21:37:44

La mia domanda è identica a quella dell'OP. Sto usando il codice in questa risposta. Lo stato del mio post non cambia da bozza a pubblicato, ma wp_update_post restituisce 1.

TARKUS TARKUS
2 giu 2021 22:29:15

@TARKUS devi cambiare $status in 'draft'

Nathan Nathan
17 lug 2021 09:58:33
7
17

Ecco una funzione che modifica lo stato di un articolo

/*
$post_id - L'ID dell'articolo che vuoi modificare.
$status -  Lo stato dell'articolo: 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);
}

Chiama semplicemente la funzione passando l'ID dell'articolo e il nuovo stato che desideri assegnargli, ad esempio:

change_post_status(12,'private');
20 mar 2011 00:29:56
Commenti

Come potrei aggiungere la possibilità di rendere lo stato un'opzione selezionabile..? Vorrei poter alternare solo tra pubblicato e bozza e poi aggiornare il post con l'opzione selezionata...

User User
20 mar 2011 00:50:50

Sai che hai già un menu a tendina appositamente per questo nella schermata di modifica?

Bainternet Bainternet
20 mar 2011 02:15:07

ah ah.. sì.. ma sto cercando di creare una pagina personalizzata di opzioni admin che eviti quella pagina.. Vorrei avere un elenco di pagine specifiche disponibili e dare all'utente admin la possibilità di semplicemente alternare tra pubblicato.. o come bozza (non pubblicato) - So che si può fare, ma sto avendo difficoltà con il codice per implementarlo.

User User
20 mar 2011 03:53:19

aggiorna la tua domanda con il codice che hai e avrò una visione migliore di dove posso aiutarti.

Bainternet Bainternet
20 mar 2011 03:59:20

Non ho molto più codice di quello che mi hai dato... In realtà non so sviluppare codice ma di solito riesco a modificare qualcosa se è vicino a quello che voglio fare... Fondamentalmente ho bisogno di una pagina di opzioni che mi permetta di elencare un ID pagina specifico e dare all'amministratore la possibilità di scegliere pubblica o bozza per ogni pagina elencata, poi cliccare salva (o aggiorna) e impostare ogni pagina come configurato dall'utente. Mi piacerebbe imparare a farlo ma sento che potrei chiedere troppo in un forum di supporto gratuito.. ?

User User
20 mar 2011 04:11:00

Ho appena aggiornato la mia domanda per darti un'idea migliore di quello che sto cercando di realizzare

User User
20 mar 2011 04:26:14

@Brainternet quale hook dovrei usare in questo caso?

Prafulla Kumar Sahu Prafulla Kumar Sahu
4 dic 2015 10:39:03
Mostra i restanti 2 commenti