Hinzufügen benutzerdefinierter Beitragstypzählungen zum Dashboard

7

Das Dashboard zeigt mir bequem an, wie viele Beiträge, Seiten und Kommentare ich habe. Ich möchte, dass ich weiß, wie viele Artikel, Videos und Cartoons ich auch habe (drei benutzerdefinierte Beitragstypen, die mit meinem Thema registriert sind). Wie würde ich vorgehen, um diese in das Fenster "Im Moment" im Dashboard aufzunehmen?

Alt-Text

Sampson
quelle

Antworten:

9

Ja, dieses Widget enthält mehrere Aktionen, einschließlich right_now_content_table_end. Beispiel:

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' );
Annika Backstrom
quelle
Ebenfalls in der besten Sammlung Wiki behandelt: wordpress.stackexchange.com/questions/1567/…
t31os
6

Basierend auf demselben Code können Sie diesen verwenden, um alle benutzerdefinierten Beitragstypen und die Anzahl der benutzerdefinierten Taxonomien anzuzeigen:

// Add custom taxonomies and custom post types counts to dashboard
add_action( 'right_now_content_table_end', 'my_add_counts_to_dashboard' );
function my_add_counts_to_dashboard() {
    // Custom taxonomies counts
    $taxonomies = get_taxonomies( array( '_builtin' => false ), 'objects' );
    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, $num_terms );
        $associated_post_type = $taxonomy->object_type;
        if ( current_user_can( 'manage_categories' ) ) {
            $num = '<a href="edit-tags.php?taxonomy=' . $taxonomy->name . '&post_type=' . $associated_post_type[0] . '">' . $num . '</a>';
            $text = '<a href="edit-tags.php?taxonomy=' . $taxonomy->name . '&post_type=' . $associated_post_type[0] . '">' . $text . '</a>';
        }
        echo '<td class="first b b-' . $taxonomy->name . 's">' . $num . '</td>';
        echo '<td class="t ' . $taxonomy->name . 's">' . $text . '</td>';
        echo '</tr><tr>';
    }

    // Custom post types counts
    $post_types = get_post_types( array( '_builtin' => false ), 'objects' );
    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, $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 '<td class="first b b-' . $post_type->name . 's">' . $num . '</td>';
        echo '<td class="t ' . $post_type->name . 's">' . $text . '</td>';
        echo '</tr>';

        if ( $num_posts->pending > 0 ) {
            $num = number_format_i18n( $num_posts->pending );
            $text = _n( $post_type->labels->singular_name . ' pending', $post_type->labels->name . ' pending', $num_posts->pending );
            if ( current_user_can( 'edit_posts' ) ) {
                $num = '<a href="edit.php?post_status=pending&post_type=' . $post_type->name . '">' . $num . '</a>';
                $text = '<a href="edit.php?post_status=pending&post_type=' . $post_type->name . '">' . $text . '</a>';
            }
            echo '<td class="first b b-' . $post_type->name . 's">' . $num . '</td>';
            echo '<td class="t ' . $post_type->name . 's">' . $text . '</td>';
            echo '</tr>';
        }
    }
}
Sébastien Méric
quelle
1

Für alle, die daran interessiert sind, den Abschnitt "Diskussion" so zu ändern, dass die Anzahl der ausstehenden Beiträge angezeigt wird, anstatt alles in "Inhalt" zu haben, kann der Hook " right_now_discussion_table_end " folgendermaßen verwendet werden:

add_action( 'right_now_discussion_table_end', 'my_add_counts_to_rightnow_discussion' );
function my_add_counts_to_rightnow_discussion() {
    // Custom post types counts
    $post_types = get_post_types( array( '_builtin' => false, 'public' => true , 'show_ui' => true), 'objects' );
    foreach ( $post_types as $post_type ) {
            if ( current_user_can( 'edit_posts' ) ) {

        $num_posts = wp_count_posts( $post_type->name );
         $text = _n( $post_type->labels->singular_name, $post_type->labels->name, $num_posts->publish );

           $num = number_format_i18n( $num_posts->pending );
            $post_types = get_post_types( array( '_builtin' => false, 'public' => true , 'show_ui' => true), 'objects' );

            $num = '<a href="edit.php?post_status=pending&post_type=' . $post_type->name . '">' . $num . '</a>';
                $text = '<a class="waiting" href="edit.php?post_status=pending&post_type=' . $post_type->name . '">' . $text . ' Pending </a>';

            echo '<td class="first b b-' . $post_type->name . 's">' . $num . '</td>';
            echo '<td class="t ' . $post_type->name . 's">' . $text . '</td>';
            echo '</tr>';
        }
    }
}

Ich habe auch auf if(pending >0)diese Weise entfernt , dass die Beitragstypen mit der Anzahl auf der linken Seite übereinstimmen. Wenn Sie diesen Code verwenden, verwenden Sie einfach den Code von Sébastien oder Adam für die Zählung und entfernen Sie den ausstehenden Abschnitt.

Beachten Sie auch, dass ich eine Überprüfung hinzugefügt habe, um festzustellen, ob die Beitragstypen öffentlich waren und in der Benutzeroberfläche angezeigt werden sollen. Dies kann zu jedem Code des anderen hinzugefügt werden.

Brooke.
quelle
1
add_action( 'dashboard_glance_items', 'cor_right_now_content_table_end' );

function cor_right_now_content_table_end() {

    $args = array(
        'public' => true,
        '_builtin' => false
    );
    $output = 'object';
    $operator = 'and';

    $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' ) ) {
            $output = '<a href="edit.php?post_type=' . $post_type->name . '">' . $num . '&nbsp;' . $text . '</a>';
        }
        echo '<li class="post-count ' . $post_type->name . '-count">' . $output . '</li>';
    }
    $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' ) ) {
            $output = '<a href="edit-tags.php?taxonomy=' . $taxonomy->name . '">' . $num . '&nbsp;' . $text . '</a>';
        }
        echo '<li class="taxonomy-count ' . $taxonomy->name . '-count">' . $output . '</li>';
    }
}

// Add Some CSS to "At a Glance" Widget

function custom_colors() {

    echo '<style type="text/css">
        .slides-count a:before {content:"\f233"!important}
        .gallery-count a:before {content:"\f163"!important}
        </style>';
}

add_action('admin_head', 'custom_colors');
Chirag Pipariya
quelle
Versuchen Sie diesen Code, es funktioniert sehr gut, Liebling
Chirag Pipariya