save_post-Aktion wird beim Speichern nicht ausgetriggers

Unten ist mein Code, der post_id und zufällig 3 Beiträge aus der gleichen Kategorie und speichern sie als benutzerdefinierte Feld. Der Code funktioniert eindeutig, denn wenn ich auf “Neuer Beitrag” klicke, sehe ich, dass das benutzerdefinierte Feld ausgefüllt wird, aber wenn ich auf “Veröffentlichen” oder “Speichern” klicke, wird der unten stehende Code nicht ausgeführt, was ich verstehe, Save_Post Wird beim Erstellen eines neuen Posts einmal aufgerufen und noch einmal, wenn Sie den Post tatsächlich speichern.

Lustig ist, dass der Code unten im lokalen Server, WAMP funktioniert, aber nicht auf meinem Produktionsserver, ich weiß nicht warum. Sie benutzen alle die gleichen Plugins.

function update_postmeta($post_id) { global $post; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } unset($rand_id); $cat_id = get_the_category($post_id); $args = array( 'showposts' => 3, 'orderby' => 'rand', 'cat' => $cat_id[0]->cat_ID, ); $my_query = new WP_Query($args); while ($my_query->have_posts()) : $my_query->the_post(); $rand_id = $rand_id.get_the_ID().','; endwhile; update_post_meta($post_id, 'related_id',$rand_id); } add_action('save_post', 'update_postmeta'); 

Solutions Collecting From Web of "save_post-Aktion wird beim Speichern nicht ausgetriggers"

Sie haben einige Fehler in Ihrem Code. Sie können beispielsweise eine nicht definierte Variable unset . Einige Zeilen unten versuchen Sie erneut eine nicht definierte Variable zu verwenden …. vielleicht ist das, was die Probleme verursacht.

Kannst du das versuchen? (Bearbeitet, ich denke, ist besser get_posts als new WP_Query in diesem Fall)

 function wpse_update_postmeta($post_id) { if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } $cat_id = get_the_category($post_id); $related_posts = array(); if( !empty($cat_id) ) { $args = array( 'posts_per_page' => 3, 'orderby' => 'rand', 'category' => $cat_id[0]->cat_ID, ); $related_posts = get_posts($args); } if( count($related_posts) > 0 ) { $rand_id = array(); foreach( $related_posts as $related_post ) { $rand_id[] = $related_post->ID; } update_post_meta($post_id, 'related_id', implode(",", $rand_id)); //Uncomment the next line to check if you get here //error_log("Hello! I'm here"); } } add_action('save_post', 'wpse_update_postmeta');