Wie speichert man eine Shortcode-function?

Ich möchte auf meiner Startseite die Gesamtzahl der Beiträge in einer WordPress Multisite zeigen. Das sind fast 7000 in 500 Blogs. Also habe ich eine function erstellt, die jeden Blog durchlaufen muss, um die Beiträge zu zählen. Da dies viel Zeit benötigt, ist diese function nicht sehr nützlich. Aber gibt es eine Möglichkeit zu sagen, dass es die Ausgabe für etwa 1 Woche zwischenspeichern sollte ?!

Hier ist mein Code:

function posts_count_func( $args ){ 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(); $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'; } return $total_network; switch_to_blog( $original_blog_id ); } add_shortcode( 'posts', 'posts_count_func' ); 

Vielen Dank und viel Spaß!

Solutions Collecting From Web of "Wie speichert man eine Shortcode-function?"

Vielleicht sehen Sie sich die WordPress Transient API an .

Sie sollten Ihre Shortcode-Ausgabe $total_network mit speichern können

 set_transient( 'my_shortcode_cache', $total_network, WEEK_IN_SECONDS ); 

Wo WEEK_IN_SECONDS ist eine eingebaute Konstante gleich 604800 .

Sie können es dann abrufen mit:

 get_transient( 'my_shortcode_cache' ); 

Wenn Sie es netzwerkweit benötigen, gibt es auch set_site_transient() und get_site_transient() .