J'essaie d'obtenir des informations sur la page des sites de mon réseau dans une colonne. La procédure ci-dessous vous permet de récupérer l’ID de site réseau de chaque site.
Comment puis-je lui faire afficher la valeur d'option pour l'élément (blog_expire) dans la colonne option_name de la table blogname_options?
class Add_Blog_ID {
public static function init() {
$class = __CLASS__ ;
if ( empty( $GLOBALS[ $class ] ) )
$GLOBALS[ $class ] = new $class;
}
public function __construct() {
add_filter( 'wpmu_blogs_columns', array( $this, 'get_id' ) );
add_action( 'manage_sites_custom_column', array( $this, 'add_columns' ), 10, 2 );
add_action( 'manage_blogs_custom_column', array( $this, 'add_columns' ), 10, 2 );
add_action( 'admin_footer', array( $this, 'add_style' ) );
}
public function add_columns( $column_name, $blog_id ) {
if ( 'blog_id' === $column_name )
echo $blog_id;
return $column_name;
}
// Add in a column header
public function get_id( $columns ) {
$columns['blog_id'] = __('ID');
return $columns;
}
public function add_style() {
echo '<style>#blog_id { width:7%; }</style>';
}
}
add_action( 'init', array( 'Add_Blog_ID', 'init' ) );
voici une version modifiée de votre classe qui devrait fonctionner:
class Add_Blog_ID {
public static function init() {
$class = __CLASS__ ;
if ( empty( $GLOBALS[ $class ] ) )
$GLOBALS[ $class ] = new $class;
}
public function __construct() {
add_filter( 'wpmu_blogs_columns', array( $this, 'get_id' ) );
add_action( 'manage_sites_custom_column', array( $this, 'add_columns' ), 10, 2 );
add_action( 'manage_blogs_custom_column', array( $this, 'add_columns' ), 10, 2 );
add_action( 'admin_footer', array( $this, 'add_style' ) );
}
public function add_columns( $column_name, $blog_id ) {
if ( 'blog_id' === $column_name ){
echo $blog_id;
//render column value
}elseif( 'blog_expire' === $column_name ){
echo get_blog_option($blog_id,'blog_expire',"Default Value To Show if none");
}
return $column_name;
}
// Add in a column header
public function get_id( $columns ) {
$columns['blog_id'] = __('ID');
//add extra header to table
$columns['blog_expire'] = __('Blog Expires');
return $columns;
}
public function add_style() {
echo '<style>#blog_id { width:7%; }</style>';
}
}
add_action( 'init', array( 'Add_Blog_ID', 'init' ) );
Ce n'est pas une réponse à la question, mais une fonctionnalité supplémentaire au code JonnyPlow & Bainternet.
Je voulais la colonne ID au début, pas la fin. Ceci peut être réalisé de cette façon:
public function get_id( $columns ) {
$columns['blog_expire'] = __('Blog Expires');
$in = array('blog_id' => 'ID');
$columns = $in + $columns; // array_unshift don't work here, don't ask me why
return $columns;
}
Mais , si nous voulons affiner et le mettre comme seconde (ou troisième) colonne, une fonction supplémentaire est pratique.
admin_footer
soit inoffensif sur les autres écrans, je mets le suffixe correct pour le chargement uniquement dans sites.php
blog_expire
ne rendait rien pour moi, je suis passé à template
pour un aperçu rapide du thème utilisé par chaque site.class Add_Blog_ID {
public static function init() {
$class = __CLASS__ ;
if ( empty( $GLOBALS[ $class ] ) )
$GLOBALS[ $class ] = new $class;
}
public function __construct() {
add_filter( 'wpmu_blogs_columns', array( $this, 'get_id' ) );
add_action( 'manage_sites_custom_column', array( $this, 'add_columns' ), 10, 2 );
add_action( 'manage_blogs_custom_column', array( $this, 'add_columns' ), 10, 2 );
add_action( 'admin_footer-sites.php', array( $this, 'add_style' ) );
}
private function array_put_to_position(&$array, $object, $position, $name = null) {
$count = 0;
$return = array();
foreach ($array as $k => $v) {
// insert new object
if ($count == $position) {
if (!$name) $name = $count;
$return[$name] = $object;
$inserted = true;
}
// insert old object
$return[$k] = $v;
$count++;
}
if (!$name) $name = $count;
if (!$inserted) $return[$name];
$array = $return;
return $array;
}
public function add_columns( $column_name, $blog_id ) {
if ( 'blog_id' === $column_name ) {
echo $blog_id;
//render column value
} elseif ( 'template' === $column_name ) {
echo get_blog_option($blog_id, 'template', "Default Value To Show if none");
}
return $column_name;
}
// Add in a column header
public function get_id( $columns ) {
$columns = $this->array_put_to_position($columns, 'ID', 1, 'blog_id');
$columns['template'] = __('Using Theme');
return $columns;
}
public function add_style() {
echo '<style>#blog_id { width:7%; }</style>';
}
}
add_action( 'init', array( 'Add_Blog_ID', 'init' ) );