Próbuję wdrożyć system księgowania front-end, który pokazuje dane taksonomiczne w kilku rozwijanych polach wyboru. Każde menu rozwijane jest nazywane przy użyciu „nazwy” $arg
w wp_dropdown_categories()
.
wp_dropdown_categories( array(
'taxonomy' => 'location',
'hide_empty' => 0,
'orderby' => 'name',
'order' => 'ASC',
'name' => 'location',
) );
Jak widać taksonomia to „lokalizacja”, a wybrana nazwa to także „lokalizacja”.
Następnie dodam zmienne dla każdej listy rozwijanej wyboru taksonomii tak jak wraz z post_title, post_content itp:
$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'] );
Na koniec dodaję dodatkowe informacje do tablicy gotowej do wysłania wp_insert_post()
. Jestem całkowicie skazany na to, czy robię właściwą rzecz, dodając tax_input
do tablicy, jak poniżej, ponieważ to, co rozumiem z kodeksu, muszę zrobić.
'tax-input' => array(
$location,
$sale_rental,
$price
),
Tak więc wszystko wygląda tak:
$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 );
Jednak po przesłaniu nowego postu wszystkie standardowe dane postu (a także mój niestandardowy typ postu) działają poprawnie, ale systematyka nie. Oczywiście robię coś złego, ale co?
źródło
Możesz to zrobić za pomocą wp_insert_post , ale musisz także określić systematykę
tax_input
, więc powinna ona wyglądać tak:Używam
implode()
, aby$location
mogła być tablicą z wieloma terminami.Zauważ też, że działa to tylko w przypadku taksonomii niehierarchicznych. W przypadku taksonomii hierarchicznych musisz podać tablicę zamiast łańcucha.
źródło
Źródło problemu
Po kilku badaniach na ten temat kazano mi sprawdzić elementy wewnętrzne (co zrobiłem). Ponieważ importowałem posty z zewnętrznego źródła jako niestandardowy typ postów, po prostu ustawiłem użytkownika na
-1
(zamiast dodawać użytkownika bota). Problem, na który natrafiłem, polegał na tym, żewp_insert_post()
ztax_input
zestawem wewnętrznie sprawdza możliwości użytkownika, których oczywiście nie ma nieistniejący użytkownik.SysBot na ratunek
Rozwiązaniem było wtedy, że napisałem wtyczkę SysBot . W ten sposób mogłem po prostu dołączyć użytkownika SysBot (pełniącego rolę edytora ) do nowo utworzonego postu i wszystko działało zgodnie z oczekiwaniami.
źródło