Tutti i post scritti mentre i commenti sono disabilitati in modo globale in impostazioni>discussione, mantengono lo stato ‘closed‘ anche dopo una successiva attivazione che quindi ha effetto solo per gli articoli pubblicati successivamente.

abilita-commenti-wordpress

Per attivare i commenti nei vecchi articoli è possibile intervenire singolarmente nella pagina ‘Modifica Articolo‘ spuntanto la voce Permetti commenti.
abilita-commenti-per-un-articolo

Funzione ‘modifica di massa’ di Worpress

Se gli articoli da modificare sono tanti  possiamo sfruttare un funzionalità del backend di wordpress che permette di applicare la modifica a un gruppo di post.

Andiamo nella schermata di riepilogo ‘Tutti gli articoli’.

azioni-di-gruppo-modifica

Selezioniamo i post che ci interessano. Nella select box scegliamo modifica e poi clicchiamo su applica.

modifica-di-massa-permetti-commenti

A questo punto compare la schermata modifica di massa in cui insereiremo permetti
nella select box relativa ai commenti e poi clicchiamo su aggiorna.

Lo stato dei commenti nel database

Nella tabella wp_posts  del database vediamo che l’attivazione dei commenti dipende dalla colonna comment_status che può essere closed o open.

comment-status-open-wordpress

Abilitare i commenti per un singolo post in php

Se per qualsiasi motivo dobbiamo modificare lo status dei commenti utilizzando il codice php, possiamo utilizzare la funzione wp_update_post( ) di worpress. Alla funzione passeremo un array che contiene l’id del post da modificare e il nuovo status.

     $my_post = array(
        'ID'           => $id,
      'comment_status' => 'open'
      );

     wp_update_post( $my_post );

Abilitare i commenti per un gruppo di post in php

L’esempio precedente può essere applicato a un gruppo di post utilizzando un ciclo foreach.

$args = array(
          'post_status' => 'publish',
	  'post_type' => 'my_custom_post', // da modificare
	  'posts_per_page' => -1,
		);

	  $tutti_posts = new WP_Query( $args );

foreach ( $tutti_posts->posts as $art )
{
	  $my_post = array(
          'ID'           => $art->ID,
          'comment_status' => 'open'
  );

  wp_update_post( $my_post );
}

La prima parte del codice recupera tutti i post del tipo personalizzato my_custom_post. L’array $args con i parametri della query varia in base alle nostre esigenze.

Dopo aver lanciato la query tutti gli oggetti dei post trovati saranno dentro l’array $tutti_posts.

A questo punto con un ciclo foreach lanciamo la funzione wp_update_post() per ogni post passando come parametri l’ID del post e lo stato ‘open’.

N.B. Lo script deve essere eseguito una sola volta quindi deve essere cancellato dalla pangina dopo averlo lanciato.


  inStileWeb.com
blog comments powered by Disqus