Multisite počítadlo článků per subdoména

Narazil jsem na zajímavé počítadlo článků na nástěnku wordpress multisite, kam vidí většinou jen superadmin. Cíl počítadla je jednoduchý, ukázat počet publikovaných článků a konceptů na nástěnce přístupné jen Superadminovi 🙂

Počítadlo vypadá takto:

wordpress-multisite-pocitadlo-clanku

Kod upravený do češtiny vložený na konec function.php

//pocitadlo clanku  
 add_action( 'wp_network_dashboard_setup', 'wpse_66963_network_dashboard_setup' );

function wpse_66963_network_dashboard_setup()
{
    wp_add_dashboard_widget(
        'wpse_66963_posts_count_widget',
        '<div id="icon-edit" class="icon32"></div><h2>Počítadlo článků</h2>',
        'wpse_66963_posts_count' );
}

function wpse_66963_posts_count()
{
    global $wpdb;
    $blogs = $wpdb->get_results( $wpdb->prepare(
            "SELECT * FROM {$wpdb->blogs} WHERE  spam = '0' 
            AND deleted = '0' AND archived = '0' 
            ORDER BY registered DESC, 2", ARRAY_A ) );

    $original_blog_id = get_current_blog_id();

    if ( empty( $blogs ) )
    {
        echo '<p>No blogs!</p>';
        break;
    }
    ?>
    <table class="widefat">
        <thead>
            <tr>
                <th>Stránka (téma)</th>
                <th>Počet článků</th>
                <th>Počet konceptů</th>
            </tr>
        </thead>
        <tfoot>
            <tr>
            <th>Stránka (téma)</th>
            <th>Počet článků</th>
            <th>Počet konceptů</th>
            </tr>
        </tfoot>
        <tbody>
        <?php
    $args = array(
        'numberposts'     => -1,
        'post_type'       => 'post',
        'post_status'     => 'publish' );
    $total_network = $draft_network = 0;
    $total_sites = 0;

    foreach ($blogs as $blog)
    {
        wp_cache_flush();
        switch_to_blog( $blog->blog_id );
        $args['post_status'] = 'publish';
        if (count(get_posts($args))<2) { continue; }
        $total_posts = count( get_posts( $args ) );
        $total_network += $total_posts;
        $total_sites += 1;

        $args['post_status'] = 'draft';
        $draft_posts = count( get_posts( $args ) );
        $draft_network += $draft_posts;
        ?>
           <tr>
             <td><a href="<?php echo site_url(); ?>"><?php echo site_url(); ?></a></td>
             <td><?php echo $total_posts; ?></td>
             <td><?php echo $draft_posts; ?></td>
           </tr>
        <?php
    }
    ?>
           <tr>
             <td><b>Celkový počet (<?php echo $total_sites;?> stránek s obsahem)</b></td>
             <td><?php echo $total_network; ?></td>
             <td><?php echo $draft_network; ?></td>
           </tr>
        </tbody>
    </table>
<small>Použitá pamět: <?php echo function_exists('memory_get_peak_usage') ?
number_format(memory_get_peak_usage(TRUE) / 1024 / 1024, 2, '.', ' ') : 'n/a'; ?> MB </small>
<?php
    switch_to_blog( $original_blog_id );
}

Zdroj: http://wordpress.stackexchange.com/questions/66963/how-to-display-network-post-count

Trochu jsem upravil zobrazení použité paměti úplně dole, doufám že správně 🙂

Jen by mě zajímalo jestli je lepší to takhle nechat v function.php (childtheme) nebo na to udělat plugin.

1 komentář u „Multisite počítadlo článků per subdoména“

  1. V tomto případě je asi lepší plugin. Soubor functions.php se používá při úpravách, které nějak souvisí se šablonou. Aneb i kdybys třeba v budoucnu změnil šablonu, tak bys asi chtěl nechat tuto funkcionalitu počítadla zachovanou (= lepší je samostatný plugin). Kdyby to ale souviselo s použitou šablonou, tak je zase lepší soubor functions.php.

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *