Aggiunta automatica di categorie in base all’identità dell’utente

Da inserire in function.php, meglio se – ovviamente – nel vostro child theme.
Questo codice permette di pubblicare un post in una o più categorie determinate in base all’identità dell’utente e in aggiunta a quelle che sceglierà autonomamente.
Può accadere infatti che un utente debba scrivere obbligatoriamente in una categoria predefinita, ma che si dimentichi di spuntarla.
In questo modo la spunta è automaticamente impostata sul modulo di scrittura dell’articolo. L’utente apre il modulo per scrivere e vedrà già spuntata la categoria che gli appartiene.
QUESTO CODICE PRESUPPONE L’ESISTENZA DI UNA TABELLA NEL VOSTRO DATABASE CHE ABBINI L’id DELL’UTENTE A QUELLO DELLA CATEGORIA IN CUI L’UTENTE OBBLIGATORIAMENTE DEVE SCRIVERE
Ricordatevi di sostituire:
id_ADMIN , con l’id dell’Admin reale
id_CATEGORIA, con l’id della categoria reale
tabella_CORRISPONDENZE, con il nome della tabella di abbinamento tra id utente e id categoria


//Azione: Aggiunge automaticamente categorie e tag al post in base all'identità dell'utente
add_action( 'wp_insert_post', 'update_post_terms' );

//Funzione
function update_post_terms( $post_id ) {
//Esclude dalla regola Admin che ovviamente deve aver la possibilità di scrivere come e dove gli pare. Potete ricavare l’id dell’ADMIN dall’elenco users
global $current_user;
get_currentuserinfo();
$nidentita=($current_user->ID);
//Esclude l’Admin in base all’ID
if($nidentita!=”id_ADMIN”) {
//stabilisce la categoria da abbinare come obbligatoria al redattore
global $wpdb;
//Estrae categoria
$variab = $wpdb->get_results(“SELECT id_CATEGORIA FROM tabella_CORRISPONDENZE WHERE idut=\”$nidentita\” LIMIT 1″);
foreach ($variab as $variabb) {
echo””.$variabb->id_CATEGORIA.” “;
$catabb=”$variabb->id_CATEGORIA”;
}
if ( $parent = wp_is_post_revision( $post_id ) )
$post_id = $parent;
$post = get_post( $post_id );
if ( $post->post_type != ‘post’ )
return;
// aggiunge la (o le) categoria/e
$categories = wp_get_post_categories( $post_id );
$newcat = get_term_by( ‘id’, ”.$catabb.”, ‘category’ );
// Eventualmente altre categorie ecc…
// $newcatt2 = get_term_by( ‘ID’, ‘id_CATeGORIA2’, ‘category’ );
array_push( $categories, $newcat->term_id, $newcatt->term_id );
wp_set_post_categories( $post_id, $categories );
}//Chiude controllo su identità ADMIN
}//Chiude funzione

————————————————
Ho trovato l’ispirazione da qui:

Invia commento

Il tuo indirizzo email non sarà pubblicato.