Como atribuir taxonomia padrão às páginas em ‘save_post’?

Eu tento atribuir taxonomias personalizadas a uma página quando recém-adicionado pelo botão “publicar”.

Esta é a function:

function set_default_object_terms( $id, $post ) { if ( 'publish' === $post->post_status ) { log_me ('From inside function: '.__FUNCTION__.', while I pressed the "publish" button. Post-ID: '.$id); $taxonomy_ar = get_terms( 'property-features', '' ); foreach ($taxonomy_ar as $taxonomy_term) { log_me ('Inside the function: '.__FUNCTION__.' and inside the "foreach"-loop for the ID: '.$id.' and Term: '. $taxonomy_term->name . ' and Post-ID :'. $post->ID); wp_set_object_terms( $post->ID, $taxonomy_ar, $taxonomy_term->name, true ); } }} 

e aqui está o gancho:

 add_action( 'save_post', 'set_default_object_terms', 100, 2 ); 

No arquivo de log que adicionei para descobrir se eu encontro todos os meus valores, todas as minhas taxonomias personalizadas são encontradas:

 [13-May-12 16:28] be in function while "publish" is pressed with this id: **64** [13-May-12 16:28] In the "foreach" with id: 64 and Term: **Kitchen** and Post-ID :**64** [13-May-12 16:28] In the "foreach" with id: 64 and Term: **Stove** and Post-ID :**64** [13-May-12 16:28] In the "foreach" with id: 64 and Term: **Pets ok** and Post-ID :**64** 

Mas não o atribui. Alguém sabe onde é o truque?

Solutions Collecting From Web of "Como atribuir taxonomia padrão às páginas em ‘save_post’?"

Você está usando wp_set_object_terms errado, o segundo parâmetro deve ser o termo slug ou id e o parâmetro 3 deve ser o nome da taxonomia, então tente:

 function set_default_object_terms( $id, $post ) { if ( 'publish' === $post->post_status ) { log_me ('be in function while "publish" i pressed with this id: '.$id); $taxonomy_ar = get_terms( 'property-features' ); if (count($taxonomy_ar) > 0){ foreach ($taxonomy_ar as $taxonomy_term) { //create an arry with all term ids log_me ('In the "foreach" with id: '.$id.' and Term: '. $taxonomy_term->name . ' and Post-ID :'. $post->ID); $term_ids[] = $taxonomy_term->ID; } wp_set_object_terms($post->ID,$term_ids,'property-features',true); } } } 

e certifique-se de registrar a taxonomia para o tipo de páginas usando register_taxonomy_for_object_type ex:

 register_taxonomy_for_object_type('property-features','page');