Ich versuche, ein Front-End-Buchungssystem zu implementieren, das Taxonomiedaten in mehreren Dropdown-Auswahlfeldern anzeigt. Jede der Dropdowns wird mit dem "Namen" $arg
in benannt wp_dropdown_categories()
.
wp_dropdown_categories( array(
'taxonomy' => 'location',
'hide_empty' => 0,
'orderby' => 'name',
'order' => 'ASC',
'name' => 'location',
) );
Wie Sie sehen können, lautet die Taxonomie "Standort" und der ausgewählte Name "Standort".
Ich füge dann die Variablen für jede Taxonomie hinzu und wähle Dropdowns wie folgt zusammen mit post_title, post_content usw. aus:
$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'] );
Schließlich füge ich die zusätzlichen Informationen in ein Array ein, das zum Senden bereit ist wp_insert_post()
. Ich bin ziemlich festgefahren, ob ich das Richtige tue, indem ich tax_input
das Array wie unten hinzufüge, da dies das ist, was ich aus dem Codex verstehe, das ich tun muss.
'tax-input' => array(
$location,
$sale_rental,
$price
),
Damit alles so aussieht:
$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 );
Wenn ich jedoch den neuen Beitrag abschicke, gehen alle Standardbeitragsdaten (und auch mein benutzerdefinierter Beitragstyp) in Ordnung, die Taxonomien jedoch nicht. Ich mache offensichtlich etwas falsch, aber was?
quelle
Sie können es mit wp_insert_post tun , aber Sie müssen auch die Taxonomie in angeben
tax_input
, damit es so aussieht:Ich benutze
implode()
also das$location
könnte ein Array mit mehreren Begriffen sein.Beachten Sie außerdem, dass dies nur für nicht hierarchische Taxonomien funktioniert. Für hierarchische Taxonomien müssen Sie statt astring ein Array angeben.
quelle
Quelle des Problems
Nach einigen Recherchen zu diesem Thema wurde mir gesagt, dass ich die Interna überprüfen soll (was ich auch getan habe). Beim Importieren von Beiträgen aus einem externen Feed als benutzerdefinierten Beitragstyp habe ich den Benutzer einfach auf festgelegt
-1
(anstatt einen Bot-Benutzer hinzuzufügen). Das Problem, auf das ich stieß, war, dasswp_insert_post()
mit einemtax_input
Set intern nach einer Benutzerfähigkeit gesucht wurde, die ein nicht existierender Benutzer offensichtlich nicht hat.SysBot für die Rettung
Die Lösung war dann, dass ich das SysBot-Plugin geschrieben habe . Auf diese Weise konnte ich einfach den SysBot-Benutzer (der die Rolle des Editors hat ) an diesen neu erstellten Beitrag anhängen und alles funktionierte so, wie es erwartet wurde.
quelle