2016-09-01 3 views
2

Ich habe eine Anforderung in WordPress, wo, wenn die Taxonomie Begriff String ist gleich post Titel, die Aktualisierung der Slug (da die Permalink-Regeln in diesem Fall fehlschlagen).Wordpress wp_update_post nicht aktualisieren post_name

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'); 

    } 
} 

Auf erforderlich Post Ich Protokolle bin immer: Yesss Ergebnis 0. Der Butzen nicht aktualisiert. Bitte helfen Sie auf dem gleichen. Ich habe buchstäblich alle verfügbaren Lösungen für dieses Problem ausprobiert. Es muss über functions.php erfolgen

+0

$ result = wp_update_post ($ update_args); sollte $ result = wp_update_post (args) sein; – Juergen

Antwort

0

war ich endlich in der Lage, es zu 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); 
Verwandte Themen