WordPress wp_update_post aktualisiert Beitragsname nicht

Lesezeit: 2 Minuten

Cosmolocs Benutzeravatar
Kosmoloc

Ich habe in WordPress eine Anforderung, bei der der Slug aktualisiert wird, wenn die Taxonomie-Begriffszeichenfolge mit dem Beitragstitel übereinstimmt (da die Permalink-Regeln in diesem Fall fehlschlagen).

Mein Code ist:

add_action('save_post', 'change_default_slug', 10,2);
function change_default_slug($post_id, $post) {
  error_log($post_id);
  error_log($post->post_title);
  error_log($post->post_name);

  $taxonomies=get_taxonomies('','names');
  $terms = wp_get_post_terms($post->ID, $taxonomies,  array("fields" => "names"));
  $terms = array_map('strtolower', $terms);

  error_log('terms :' . json_encode($terms));

  $title = strtolower($post->post_title);
  error_log('title : ' . $title);

  if(in_array($title, $terms)) {

    error_log('yessss');

    $args =  array (
      'ID'        => $post->ID,
      'post_name' => $post->post_name . "-post"
    );
    $result = wp_update_post($update_args);
    error_log('result');
    error_log(json_encode($result));
  } else {
    error_log('noooooooo');

  }
}

Beim erforderlichen Beitrag erhalte ich Protokolle: Ja, Ergebnis 0. Der Slug wird nicht aktualisiert. Bitte helfen Sie dabei. Ich habe buchstäblich alle verfügbaren Lösungen für dieses Problem ausprobiert. Dies muss über die Datei „functions.php“ erfolgen

  • $result = wp_update_post($update_args); sollte sein: $result = wp_update_post(args);

    – Jürgen Schulze

    20. Mai 2017 um 7:55 Uhr

Ich konnte es endlich lösen mit: wp_insert_post()

   $taxonomies=get_taxonomies('','names'); 
   $terms = wp_get_post_terms($post->ID, $taxonomies,  array("fields" => "all"));

   foreach($terms as $term) {

      if($term->taxonomy == 'category'){
           $categories[] = $term->term_id;
      } else if($term->taxonomy == 'post_tag'){
           $tags[] = $term->term_id;
      }
   }
    .
    .
    .
   //detach the hook to avoid infinite looping of the hook on post insert
   remove_action('save_post', 'change_default_slug', 10,2);

   //insert post
   $result =   wp_insert_post($post, true);

  //attach post tags to the current post (since not by default attached)
  wp_set_post_terms($post_id,$tags,'post_tag');

  //attach post categories to the current post (since not by default attached)
  wp_set_post_terms($post_id,$categories,'category');

  //re-activate the hook
  add_action('save_post', 'change_default_slug', 10,2);

  • Sie sollten die Parameter in Variablen angeben $post damit dies für die Leser Sinn ergibt.

    – Jomar Sevillajo

    18. April 2020 um 7:29 Uhr

1451070cookie-checkWordPress wp_update_post aktualisiert Beitragsname nicht

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy