J'essaie d'utiliser wp_insert_post pour créer un formulaire de soumission frontal afin que les visiteurs puissent créer une publication ET mettre à jour les champs de la boîte à méta de cette publication - pas les champs personnalisés .
Par exemple, lorsque j'utilise les éléments suivants dans le formulaire de soumission ...
<?php update_post_meta($post_id, $meta_key, $meta_value); ?>
... il met à jour la section de champ personnalisé intégrée de la publication nouvellement créée, mais pas les boîtes de méta que j'ai créées. Des idées?
Tout va dans la même table, vous n'utilisez peut-être pas le nom de clé correct pour l'insérer. La seule chose qui différencie les clés de champ personnalisées et les clés utilisées pour les métaboxes est que les clés de métabox sont généralement précédées d'un trait de soulignement pour les masquer de la liste qui apparaît dans la section des champs personnalisés. Il est également possible de stocker plusieurs objets sous forme de tableau sous une seule entrée. c'est peut-être le cas si vous utilisez une classe d'assistance Metabox pour générer les métaboxes. Regardez directement dans le tableau pour voir comment vos données metabox sont stockées.
Voici du code que j'ai utilisé pour ajouter des publications à partir d'un formulaire frontal qui ajoute également des termes de métadonnées et de taxonomie. Notez que l'extrait extrait toute la sécurité, la validation et la désinfection des données. Il montre simplement ce que je fais avec les données pour les ajouter à la base de données une fois que j'ai tout vidé.
// Submit the values if there are no errors
if(empty($errors))
{
// Prepare title
$term = get_term_by('id', $values['complaint_type'], 'complaint-type');
$title = $values['address_clean'].' ('.$term->name.')';
// Gather post data
$post = array(
'post_title' => $title,
'post_content' => $values['description'],
'post_status' => 'publish',
'post_type' => PREFIX_POST_TYPE_NAME,
'post_author' => 1
);
// Attempt to add post
if($id = wp_insert_post($post))
{
// Add metadata to post
update_post_meta($id, '_'.PREFIX_PLUGIN_NAME_L.'_latitude', $values['latitude']);
update_post_meta($id, '_'.PREFIX_PLUGIN_NAME_L.'_longitude', $values['longitude']);
// Associate complaint-type
if(!wp_set_post_terms($id, $values['complaint_type'], 'complaint-type'))
$errors['wp_set_post_terms'] = 'There was an error adding the complaint type.';
}
else
$errors['wp_insert_post'] = 'There was an error adding the complaint.';
}