- Home
- Categorie
- Coding e Sistemistica
- CMS & Piattaforme Self-Hosted
- [wordpress plugin] GT Post Approval
- 
							
							
							
							
							
[wordpress plugin] GT Post ApprovalCiao, vi volevo segnalare il plugin GT Post Approvalascritto per, e usato da, il blog multi autore GT GlobalWerming awareness2007. Gli autori sono gli utenti del forum GT che partecipano al SEO contest ineternescional in the uorld. **Cosa fa questo plugin? 
 **Il plugin aggiunge un pulsante approva/rifiuta a fianco di ogni post nel pannello di amministrazione di WordPress (edit > posts). Il pulsante è visibile solo agli editori e agli amministratori.Un post approvato è visibile in ogni sezione del blog (home, archivi, tag - se usate ultimate tag warrior), mentre se il post non è approvato, è visibile solo nell'archivio per autore. Ecco il codice commentato: [php]<?php 
 /*
 Plugin Name: GT Post Approvation
 Plugin URI:
 Description: Aggiunge un pulsante Approva/Rifiuta, visibile solo agli editori, nel pannello <a href='edit.php'>edit > posts</a>. I post non approvati sono visibili solo nell'archivio dell'autore.
 Version: b0.3
 Author: Francesco Terenzani
 Author URI: http://www.terenzani.it/
 */############################## Installazione############################## // All'attivazione del plugin, lancia la funzione per modificare la tabella wp_posts 
 register_activation_hook(FILE, 'install_gt_post_approvation');// Viene eseguita all'installazione del plugin 
 // Modifica la tabella wp_posts
 function install_gt_post_approvation(){
 global $wpdb;
 // Se è la prima installazione
 if($wpdb->get_var("SHOW COLUMNS FROM $wpdb->posts LIKE 'gt_status'") != 'gt_status'){// Step 1, aggiunge colonna e setta tutti i post come approvati (valore 1) $wpdb->query("ALTER TABLE $wpdb->posts ADD gt_status INT( 1 ) NOT NULL DEFAULT '1'"); // Step 2, cambia il valore di default: i nuovi post dovranno essere approvati manualmente $wpdb->query("ALTER TABLE $wpdb->posts CHANGE gt_status gt_status INT( 1 ) NOT NULL DEFAULT '0'"); }} ############################## The_Loop############################## // Modifica il campo where della query di WP 
 add_filter('posts_where', 'show_only_gt_approved');// Modifica la query per mostrare solo i post approvati. 
 // Niente filtro solo per la pagina degli autori e il pannello di amministrazione
 function show_only_gt_approved($where){
 if(is_author() || is_admin() || is_single() || is_page())
 return $where;
 return $where ." AND gt_status = 1 ";
 }############################## Amministazione############################## // Modifica il pannello di gestione dei post 
 if(is_admin()){
 add_filter('init', 'gt_admin_status');function gt_admin_status(){ global $wpdb; // Se l'utente è editore o amministratore if(current_user_can('edit_others_posts')){ // Aggiunge la colonna GT Status add_filter('manage_posts_columns', 'gt_column'); // Setta l'array post_ID => gt_status add_filter('the_posts', 'gt_post2status'); // Modifico query sting per renderla "pronta all'uso" nella funzione gt_return_status() if($_SERVER['QUERY_STRING']) $_SERVER['QUERY_STRING'] = '&'.$_SERVER['QUERY_STRING']; // Aggiunge pulsanti per cambiare GT status add_filter('manage_posts_custom_column', 'gt_return_status'); // CSS per enfatizzare il pulsante "Approva" add_filter('admin_head', 'gt_emphasize_to_aprove'); // Modifica lo status nel database (valori 1 -> approvato/0 -> rifiutato) if(isset($_GET['gt_reject']) && is_numeric($_GET['gt_reject'])){ $wpdb->query("UPDATE $wpdb->posts SET gt_status = 0 WHERE ID = $_GET[gt_reject]"); gt_redirect_after_change(); } elseif(isset($_GET['gt_approve']) && is_numeric($_GET['gt_approve'])){ $wpdb->query("UPDATE $wpdb->posts SET gt_status = 1 WHERE ID = $_GET[gt_approve]"); gt_redirect_after_change(); } } }} // Aggiunge la colonna GT Status nel pannello di amministrazione dei post 
 function gt_column($array){
 $array['gt_column'] = __('GT Status');
 return $array;
 }// Aggiunge pulsanti per cambiare GT status nel pannello di amministrazione dei post 
 function gt_return_status(){
 global $id, $post_gt_aproved;// Se il post corrente è approvato if($post_gt_aproved[$id]) echo "<a href='edit.php?gt_reject=$id$_SERVER[QUERY_STRING]' class='edit'>".__('Rifiuta').'</a>'; // Nota: Passo anche la query string per sapere dove redirigere dopo il cambio stato else echo "<a href='edit.php?gt_approve=$id$_SERVER[QUERY_STRING]' class='edit gtaprove'>".__('Approva').'</a>';} // Redirect dopo aver cliccato approva/rifiuta 
 function gt_redirect_after_change(){
 header('Location: '.preg_replace("/gt_(?:reject|approve)=[0-9]+[&]?/", '', $_SERVER['REQUEST_URI']));
 }// Aggiunge CSS al pannello di amministrazione 
 function gt_emphasize_to_aprove(){
 ?>
 <style type='text/css'>.gtaprove{background:#adf;font-weight:bold}</style>
 <?php
 }############################## Ottimizzazione############################## // Crea l'array globale $post_gt_aproved, struttura: id_del_post => gt_status 
 // Si può usare per sapere lo stato del post senza ulteriori query al database
 function gt_post2status($post_query_results){
 global $post_gt_aproved;$post_gt_aproved = array(); for($i = 0, $j = count($post_query_results); $i < $j; $i++) $post_gt_aproved[$post_query_results*->ID] = $post_query_results*->gt_status; return $post_query_results;} 
 ?>
 [/php]
 Una versione sempre aggiornata del codice la potete trovare qui: GT Post Approval.Se c'è qualcosa che non capite e che vorreste capire... chiedete pure  
 
- 
							
							
							
							
							Ottimo lavoro Fra_T, questo plugin è molto molto utile   
 
- 
							
							
							
							
							
il mito ha colpito ancora  
 
- 
							
							
							
							
							
Ragazzi, ora che Fra_T ha realizzato un nuovo plugin per wordpress, avete in mano una vera bomba  fate un post ben documentato direttamente su gt-globalwarming: segnalatelo su wp-plugins.net e su codex.wordpress.org (su entrambi è sufficiente registrarsi e pubblicare). Se riuscite, sengalate anche su bloggingpro.com Cercate di farlo adottare da più utenti possibile: sono backlink inglesi che valgono letteralmente ORO, senza contare tutti i BL che nel tempo otterrete spontaneamente da altri blogger e/o social bookmarkers (se lo promuovete bene, aspettatevi citazioni da mezzo mondo) Valutate anche la segnalazione a wordpress-it.it. E' italiano, ma è forte, e ve lo linka per certo! (sempre che non lo trovino da soli... in quel caso, il link è inevitabile. Per farlglielo trovare in fretta se non volete segnalare direttamente, basta scriverlo nel loro forum) Mi raccomando, anche i commenti nel codice devono essere in inglese... così come la guida passo-passo e le spiegazioni. Mettete anche gli screenshot  Forza, ci sono un sacco di blogger là fuori affamati di plugin e di notizie su wordpress da pubblicare  P.s. Complimenti Francesco, il tuo plugin è una piccola perla... meriterebbe essere incluso direttamente nel nuovo wordpress! 
 Perchè poi non provi [url=http://wordpress.org/extend/ideas/]a suggerirlo?
 
- 
							
							
							
							
							Ciao Petro, in effetti Fra_T stava proprio valutando una cosa simile e stiamo cercando di capire come muoverci per promuovere questo Plug-in  Grazie per le dritte  
 
- 
							
							
							
							
							
Pedro, ma non lo stai sopravalutando un po', come plugin?  Alla fine per il 90% o più dei blogger non è un plugin indispensabile, o no?  
 
- 
							
							
							
							
							No no, Petro ha capito bene  
 
- 
							
							
							
							
							
e vedrete appena realizza quello che DEVE FARE DA UN PO'   