Estou tentando implementar um sistema de postagem de front-end que mostra dados de taxonomia em vários campos de seleção suspensa. Cada um dos menus suspensos é nomeado usando o "nome" $arg
em wp_dropdown_categories()
.
wp_dropdown_categories( array(
'taxonomy' => 'location',
'hide_empty' => 0,
'orderby' => 'name',
'order' => 'ASC',
'name' => 'location',
) );
Como você pode ver, a taxonomia é "local" e o nome selecionado também é "local".
Em seguida, adiciono as variáveis para cada uma das opções de taxonomia, assim como junto com 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'] );
Finalmente, adiciono as informações extras em um array pronto para ser enviado por wp_insert_post()
. Estou bastante empolgado em saber se estou fazendo a coisa certa adicionando tax_input
à matriz como abaixo, pois é isso que eu entendo do códice que preciso fazer.
'tax-input' => array(
$location,
$sale_rental,
$price
),
Para que tudo acabe assim:
$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 );
No entanto, quando enviei a nova postagem, todos os dados padrão da postagem (e também meu tipo de postagem personalizada) ficam ok, mas as taxonomias não. Obviamente, estou fazendo algo errado, mas o que?
fonte
Você pode fazer isso usando wp_insert_post , mas também deve especificar a taxonomia
tax_input
, para que fique assim:Eu uso
implode()
para que$location
possa ser uma matriz com vários termos.Além disso, observe que isso funciona apenas para taxonomias não hierárquicas. Para taxonomias hierárquicas, você deve fornecer uma matriz em vez de adstringente.
fonte
Fonte do problema
Depois de alguma pesquisa sobre esse tópico, fui informado para verificar os internos (o que fiz). Como eu estava importando postagens de um feed externo como tipo de postagem personalizada, simplesmente defino o usuário como
-1
(em vez de adicionar um usuário bot). O problema que encontrei foi que,wp_insert_post()
com umtax_input
conjunto, verifica internamente a capacidade do usuário, que obviamente não existe.SysBot para o resgate
A solução foi que eu escrevi o plugin SysBot . Dessa forma, eu poderia simplesmente anexar o usuário SysBot (que tem o papel de editor ) a essa postagem recém-criada e tudo funcionou da maneira esperada.
fonte