J'essaie de mettre en œuvre un système d'affichage frontal qui affiche les données de taxonomie dans plusieurs champs de sélection déroulants. Chacune des listes déroulantes est nommée en utilisant le "nom" $arg
dans wp_dropdown_categories()
.
wp_dropdown_categories( array(
'taxonomy' => 'location',
'hide_empty' => 0,
'orderby' => 'name',
'order' => 'ASC',
'name' => 'location',
) );
Comme vous pouvez le voir, la taxonomie est "emplacement" et le nom sélectionné est également "emplacement".
J'ajoute ensuite les variables pour chacune des listes déroulantes de sélection de taxonomie comme ceci avec post_title, post_content etc:
$title = trim( $_POST['wpuf_post_title'] );
$content = trim( $_POST['wpuf_post_content'] );
$tags = wpuf_clean_tags( $_POST['wpuf_post_tags'] );
$customcategory = trim( $_POST['customcategory'] );
$cat = trim( $_POST['cat'] );
$location = trim( $_POST['location'] );
$sale_rental = trim( $_POST['sale_rental'] );
$price = trim( $_POST['price'] );
Enfin, j'ajoute les informations supplémentaires dans un tableau prêt à être envoyé par wp_insert_post()
. Je ne sais pas si je fais la bonne chose en ajoutant tax_input
dans le tableau comme ci-dessous car c'est ce que je comprends du codex que je dois faire.
'tax-input' => array(
$location,
$sale_rental,
$price
),
Pour que tout finisse par ressembler à ceci:
$my_post = array(
'post_title' => $title,
'post_content' => $content,
'post_status' => $post_status,
'post_author' => $userdata->ID,
'post_category' => array( $_POST['cat'] ),
'post_type' => $customcategory,
'tags_input' => $tags,
'tax_input' => array(
$location,
$sale_rental,
$price
),
);
$post_id = wp_insert_post( $my_post );
Cependant, lorsque j'ai soumis le nouveau message, toutes les données standard du message (et aussi mon type de message personnalisé) vont bien, mais les taxonomies ne le font pas. Je fais évidemment quelque chose de mal mais quoi?
la source
Vous pouvez le faire en utilisant wp_insert_post , mais vous devez également spécifier la taxonomie
tax_input
, donc cela devrait ressembler à ceci:j'utilise
implode()
donc cela$location
pourrait être un tableau avec plusieurs termes.Notez également que cela ne fonctionne que pour les taxonomies non hiérarchiques. Pour les taxonomies hiérarchiques, vous devez fournir un tableau au lieu de astring.
la source
Source du problème
Après quelques recherches sur ce sujet, on m'a dit de vérifier les internes (ce que j'ai fait). Comme j'importais des publications à partir d'un flux externe en tant que type de publication personnalisé, j'ai simplement défini l'utilisateur
-1
(au lieu d'ajouter un utilisateur de bot). Le problème que j'ai rencontré étaitwp_insert_post()
qu'avec untax_input
ensemble, vérifie en interne la capacité d'un utilisateur, ce qu'un utilisateur non existant n'a évidemment pas.SysBot pour le sauvetage
La solution était alors d'écrire le plugin SysBot . De cette façon, je pouvais simplement attacher l'utilisateur SysBot (qui a le rôle d' éditeur ) à ce message nouvellement créé et tout fonctionnait comme prévu.
la source