2016-01-19 31 views
0

我花了一段時間去這一點,但我可以做一些幫助。更新帖子標題與分層分類 - 需要孫子們也通過

我有一個函數,在保存時設置一個自定義的帖子標題以包含分層分類。到目前爲止,父母和孩子正在通過,而不是孫子。

我已經嘗試了很多變體的代碼,我的主要問題是我需要抓住當前條款(保存),而不是抓取當前保存的帖子。

任何人都可以幫助孫子們根據下面的代碼添加到帖子標題?條款必須按等級順序(父母>子女>孫子):

非常感謝提前。

add_action('save_post', 'update_term_title'); 
function update_term_title($post_id) 
{ 
    if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
     return; 
    if(!current_user_can('edit_post', $post_id)) 
     return; 

    $terms = wp_get_post_terms($post_id, 'TAXONOMY'); 

    if(empty($terms)) 
     return; 

    $title = false; 
    foreach($terms as $term) 
    { 
     if($term->parent) 
     { 
      $parent = get_term($term->parent, 'TAXONOMY'); 
      $title = $parent->name.' '.$term->name; 
      break; 
     } 
    } 
    /*Default to first selected term name if no children were found*/ 
    $title = $title ? $title : $terms[0]->name; 

    remove_action('save_post', 'update_term_title'); 
    $update = array(
     'ID'=>$post_id, 
     'post_name'=>sanitize_title_with_dashes($title), 
     'post_title'=>$title 
    ); 
    wp_update_post($update); 
    add_action('save_post', 'update_term_title'); 
} 

回答

0

這裏有一個修改版本,應該做的伎倆:

add_action('save_post', 'update_term_title'); 
function update_term_title($post_id) 
{ 
if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
    return; 
if(!current_user_can('edit_post', $post_id)) 
    return; 

$terms = wp_get_post_terms($post_id, 'TAXONOMY'); 

if(empty($terms)) 
    return; 

$parent = $child = $grandchild = false; 
$parent_id = $child_id = $grandchild_id = 0; 

// Find parent 
foreach($terms as $term) 
{ 
    if(!$term->parent) 
    { 
     $parent = $term->name; 
     $parent_id = $term->term_id; 
     break; 
    } 
} 
// Find child 
foreach($terms as $term) 
{ 
    if($term->parent == $parent_id) 
    { 
     $child = $term->name; 
     $child_id = $term->term_id; 
     break; 
    } 
} 
// Find grandchild 
foreach($terms as $term) 
{ 
    if($term->parent == $child_id) 
    { 
     $grandchild = $term->name; 
     $grandchild_id = $term->term_id; 
     break; 
    } 
} 

$title = trim($parent . ' ' . $child . ' ' . $grandchild); 

remove_action('save_post', 'update_term_title'); 
$update = array(
    'ID'=>$post_id, 
    'post_name'=>sanitize_title_with_dashes($title), 
    'post_title'=>$title 
); 
wp_update_post($update); 
add_action('save_post', 'update_term_title'); 
} 
+0

作品的魅力。非常感謝你,Marco。 – Lorraine