Wp Super Cache stoppt das Update einer Post Meta

Für ein benutzerdefiniertes Widget “Beliebteste Beiträge” habe ich eine function erstellt, die ein Post-Meta erstellt / aktualisiert, um die Anzahl der Post-Ansichten zu speichern, und diese function in die Vorlage single.php .

Es funktioniert gut, bis ich WP Super Cache installiert habe, die Anzahl der Ansichten bleibt unverändert.

Wie kann ich diese function bei aktiviertem WP Super Cache verwenden?

Dies ist die function, die in der single.php :

 function save_views($postID){ $metakey = 'postsViews'; $views = get_post_meta($postID,$metakey,true); $count = (empty($views) ? 0 : $views); $count++; update_post_meta($postID,$metakey,$count); } remove_action('wp_head','adjacent_posts_rel_link_wp_head',10,0); 

Solutions Collecting From Web of "Wp Super Cache stoppt das Update einer Post Meta"

Wenn WP Super Cache verwendet wird, generiert das Plugin statische HTML-Dateien für Ihre Templates. Dies bedeutet, dass jeglicher PHP-Code, den Sie ausführen, nur dann ausgeführt wird, wenn die zwischengespeicherte Seite generiert oder neu generiert wird.

Wenn Sie PHP-Code bei jedem Laden von Seiten hinter einem Cache auslösen müssen, müssen Sie AJAX verwenden .

Für Ihren Anwendungsfall benötigen Sie zwei functionen, die zu Ihrer functionsdatei hinzugefügt werden. Zuerst müssen Sie das Javascript hinzufügen, das die AJAX-Anfrage in die Fußzeile aller Ihrer Posts bringt. Das wird das tun:

 function my_count_views_script() { if ( is_single() ) : ?>  < ?php endif; } add_action( 'wp_footer', 'my_count_views_script' ); 

Dies sendet eine Anfrage an die Datei admin-ajax.php mit der Post-ID des Posts, der gerade angezeigt wird, und der Aktion, die wir damit ausführen wollen.

Um diese Ansicht zu zählen, müssen Sie admin-ajax.php mitteilen, welcher Code ausgeführt werden soll, wenn er eine Anfrage mit der Aktion my_count_views hat. Sie tun dies, indem Sie sich an wp_ajax_my_count_views (um es für angemeldete Benutzer zu handhaben) und wp_ajax_nopriv_my_count_views für abgemeldete Benutzer anschließen:

 function my_count_views() { if ( isset( $_POST['post_id'] ) && $_POST['post_id'] ) { $post_id = intval( $_POST['post_id'] ); $views = intval( get_post_meta( $post_id, 'postsViews', true ) ) ?: 0; $views += 1; update_post_meta( $post_id, 'postsViews', $views ); } wp_die(); } add_action( 'wp_ajax_my_count_views', 'my_count_views' ); add_action( 'wp_ajax_nopriv_my_count_views', 'my_count_views' );