web-dev-qa-db-fra.com

Impossible d'enregistrer le champ méta personnalisé datetime à l'aide de la fonction update_post_meta ()

Quand je fais quelque chose comme ça (dans ma fonction de plugin à l'intérieur de WP admin):

$metaboxes = get_post_meta( $post_id );
echo "<pre>";
print_r($metaboxes);
echo "</pre>";
die();

Je reçois toutes mes métaboxes info sauf le datetime .

Pourquoi donc? Où sont-ils stockés et comment puis-je y accéder?

J'utilise ce plugin http://www.deluxeblogtips.com/meta-box/ pour ajouter des champs méta personnalisés à mon type de contenu, comme:

array(
  'name'  => 'Date and time:',
  'type'  => 'datetime',
  'id'    => "rw_datetime",
),

Je souhaite enregistrer le champ datetime si un autre champ a une certaine valeur à l'aide de la fonction save_post et que cela ne fonctionne pas pour datetime pour une raison quelconque:

update_post_meta($post_id, 'rw_datetime', '2013-08-28 11:11' );

Mais quelque chose comme ceci pour un champ de texte fonctionne bien:

update_post_meta($post_id, 'rw_some_textfield', 'This is working!' );

Pourquoi donc? Pourquoi ne fonctionne-t-il pas pour datetime et pourquoi fonctionne-t-il pour d'autres types de champs?

Comment puis-je récupérer la valeur datetime si je connais le $post_id, puis mettre à jour ce champ à l'aide de la fonction update_post_meta()?

UPDATE:

Code de ma fonction save_post:

add_action( 'save_post', 'things_before_save' ); 

function things_before_save( $post_id ) { 

    // No auto saves 
    if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; 

    // make sure the current user can edit the post 
    if( ! current_user_can( 'edit_post' ) ) return;

    // assure the post type
    if ( ! get_post_type($post_id) == 'cards' ) return;

    // working
    update_post_meta($post_id, 'rw_some_textfield', 'This is working!' );

    // not working ;(
    update_post_meta($post_id, 'rw_datetime', '2013-08-28 11:11' );

} 

Notez que je ne travaille avec aucune variable, mais uniquement avec les chaînes This is working! et 2013-08-28 11:11 pour éliminer les erreurs possibles.

Donc, je suppose que le problème est que rw_datetime est stocké ailleurs et pas au même endroit que les autres métaboxes.

2
Derfder

il semble que vous utilisiez ce plugin de manière incorrecte. Il n'est pas nécessaire de raccrocher à save_post car le plugin le fait pour vous. Enregistrez simplement votre meta box et vos champs. Pour récupérer les valeurs, cochez ceci

1
iEmanuele