Habituellement, si je veux vérifier certains attributs de la publication que je suis sur le point de publier, je vérifierai comme ceci:
$post_title = $_POST['post_title'];
post_title est le nom du champ de titre dans la fenêtre d'édition.
Je pensais appliquer la même logique à la méta-boîte de taxonomie.
$formats = $_POST['tax_input[formats][]'];
Essentiellement, j'essaie de vérifier si un terme de taxonomie spécifique est sélectionné lorsque je publie un article.
Vous êtes sur la bonne voie.
Quand vous faites quelque chose comme ça sous une forme ..
<input name="tax_input[formats][]" />
Vous créez des niveaux dans le tableau $_POST
.
Donc, vous obtiendrez le tableau de formats comme ceci ...
<?php
$formats = $_POST['tax_input']['formats'];
Exemple complet ...
<?php
add_action('save_post', 'wpse74017_save');
function wpse74017_save($post_id)
{
// check nonces and capabilities here.
// use a ternary statement to make sure the input is actually set
// remember that `save_post` fires on every post save (any post type).
$formats = isset($_POST['tax_input']['formats']) ? $_POST['tax_input']['formats'] : array();
// do stuff with $formats
}
$formats = $_POST['tax_input[formats][]'];
???????
Un var_dump( $_POST );
pourrait être utile
'tax_input' =>
array (size=1)
'post_tag' => string 'tag_a,tag_b,tag_c' (length=...)
Essaye ça:
add_action( 'save_post', 'find_post_tax' );
function find_post_tax(){
$tax_to_fetch = 'supersonicscrewdriver';
$found = false;
if( isset( $_POST['tax_input']['formats'] ) && ! empty( $_POST['tax_input']['formats'] ) ){
$taxs = explode( ',', $_POST['tax_input']['formats'] );
$found = in_array( $tax_to_fetch, $taxs );
}
return $found;
}