web-dev-qa-db-fra.com

Ajouter des statistiques sur les types de publication personnalisés à un widget de tableau de bord personnalisé

J'ai beaucoup de types d'articles personnalisés et je les ai affichés dans mon tableau de bord "En ce moment", mais il est devenu assez long, je souhaite donc les séparer en un widget personnalisé dans le tiret.

Voir exemple ci-dessous:

enter image description here

Ma question est donc la suivante: comment ajouter les CPT à un widget de tableau de bord personnalisé?

Toute aide serait géniale.

Merci!

EDIT: C'est ce que j'ai (Qu'est-ce qui me manque?)

// wp_dashboard_setup is the action hook

add_action('wp_dashboard_setup', 'mycustom_moviestats');


// add dashboard widget
function mycustom_moviestats() {

wp_add_dashboard_widget('custom_movie_widget', 'Movie Stats',                  'custom_dashboard_movie_list');

}

function custom_dashboard_movie_list(){

// here is the code to add custom post types + count see below

function my_right_now() {
$num_widgets = wp_count_posts( 'widget' );

$num = number_format_i18n( $num_widgets->publish );
$text = _n( 'Widget', 'Widgets', $num_widgets->publish );
if ( current_user_can( 'edit_pages' ) ) { 
    $num = "<a href='edit.php?post_type=widget'>$num</a>";
    $text = "<a href='edit.php?post_type=widget'>$text</a>";
}   

echo '<tr>';
echo '<td class="first b b_pages">' . $num . '</td>';
echo '<td class="t pages">' . $text . '</td>';
echo '</tr>';
}
add_action( 'right_now_content_table_end', 'my_right_now' );

}
2
Marco

On dirait que vous avez une fonction déclarée dans une autre fonction, votre code est faux, essayez ceci:

// wp_dashboard_setup is the action hook
add_action('wp_dashboard_setup', 'mycustom_moviestats');

// add dashboard widget
function mycustom_moviestats() {
    wp_add_dashboard_widget('custom_movie_widget', 'Movie Stats','custom_dashboard_movie_list');
}

function custom_dashboard_movie_list(){

    $args = array(
        'public' => true ,
        '_builtin' => false );
    $output = 'object';
    $operator = 'and';
    echo '<table>';
    //loop over all custom post types
    $post_types = get_post_types( $args , $output , $operator );
    foreach( $post_types as $post_type ) {
        $num_posts = wp_count_posts( $post_type->name );
        $num = number_format_i18n( $num_posts->publish );
        $text = _n( $post_type->labels->singular_name, $post_type->labels->name , intval( $num_posts->publish ) );
        if ( current_user_can( 'edit_posts' ) ) {
            $num = "<a href='edit.php?post_type=$post_type->name'>$num</a>";
            $text = "<a href='edit.php?post_type=$post_type->name'>$text</a>";
        }
        echo '<tr><td class="first b b-' . $post_type->name . '">' . $num . '</td>';
        echo '<td class="t ' . $post_type->name . '">' . $text . '</td></tr>';
    }

    //loop over all taxonomies
    $taxonomies = get_taxonomies( $args , $output , $operator ); 
    foreach( $taxonomies as $taxonomy ) {
        $num_terms  = wp_count_terms( $taxonomy->name );
        $num = number_format_i18n( $num_terms );
        $text = _n( $taxonomy->labels->singular_name, $taxonomy->labels->name , intval( $num_terms ));
        if ( current_user_can( 'manage_categories' ) ) {
            $num = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$num</a>";
            $text = "<a href='edit-tags.php?taxonomy=$taxonomy->name'>$text</a>";
        }
        echo '<tr><td class="first b b-' . $taxonomy->name . '">' . $num . '</td>';
        echo '<td class="t ' . $taxonomy->name . '">' . $text . '</td></tr>';
    }
    echo '</table>';
}
1
Bainternet

Je pense que ça va marcher.

// wp_dashboard_setup is the action hook

add_action('wp_dashboard_setup', 'mycustom_moviestats');


// add dashboard widget
function mycustom_moviestats() {


wp_add_dashboard_widget('custom_movie_widget', 'widget name', 'custom_dashboard_movie_list');

}

function custom_dashboard_movie_list(){

// here is the code to add custom post types + count see below

}

Le code pour ajouter des types de messages personnalisés + nombre a déjà été répondu et cela encombrerait cela. Il peut être trouvé ici,

Ajout de comptes personnalisés au type de message dans le tableau de bord
Meilleure collection de code pour votre fichier functions.php

0
Wyck