J'essaie d'attribuer des taxonomies personnalisées à une page lors de l'ajout du bouton "Publier".
C'est la fonction:
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 );
}
}}
et voici le crochet:
add_action( 'save_post', 'set_default_object_terms', 100, 2 );
Dans le fichier journal que j'ai ajouté pour déterminer si je trouve toutes mes valeurs, toutes mes taxonomies personnalisées sont trouvées:
[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**
Mais cela ne l'attribue pas. Est-ce que quelqu'un sait où est le truc?
Vous utilisez wp_set_object_terms
faux, le deuxième paramètre devrait être le terme slug ou id et le paramètre 3 devrait être le nom de taxonomie, alors essayez:
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);
}
}
}
et assurez-vous d'enregistrer la taxonomie pour le type de page en utilisant register_taxonomy_for_object_type
ex:
register_taxonomy_for_object_type('property-features','page');