Closed nandomoreirame closed 10 years ago
Olá alguém podia me ajudar nessa, estou bugando de vez aqui... kkkkkkkkkkk
Isso é cagada que não consegui tempo de colocar na documentação ainda. Antes de mais nada aqui um exemplo de como usar: https://pastebin.com/hxWTcNEY
A ideia é o seguinte set_terms
recebe um array onde o index é a taxonomia e o valor é o id
do seu campo.
Desta forma a classe consegue relacionar qual é o input que esta recebendo o ID do termo que deve ser salvo em qual taxonomia você quer.
Olha no meu exemplo que usei:
// Função qualquer só gerar um array com os ids e nomes das categorias
// retorna como se fosse um array desta forma:
// array( 1 => 'sem categoria', 2 => 'videos' );
function odin_categories_array() {
$output_categories = array();
$categories = get_categories( array( 'type' => 'post' ) );
foreach( $categories as $category )
$output_categories[ $category->cat_ID ] = $category->name;
return $output_categories;
}
...
// Aqui coloco o id como cpt_category uso a função declarada para passar o array das opções
array(
'id' => 'cpt_category', // Required
'label' => __( 'Category', 'odin' ), // Required
'type' => 'select', // Required
'required' => true, // Optional (bool)
'attributes' => array(
'multiple' => 'multiple'
),
'options' => odin_categories_array()
),
// Finalmente onde configuro o termo:
$post_type_form->set_terms( array( 'category' => 'cpt_category' ) );
Veja que no exemplo mostra como é utilizado para indicar o que campo vai significar o que para criar o post.
Ah entendi @claudiosmweb ... mas vc fez com categorias de posts usando o get_categories()
... não funciona com get_terms()
?
Eu tentei aqui e ele retorna vazio... ou melhor gera o erro: Taxonomia inválida
:grin:
Eu tentei assim:
function f3_category_array() {
$output_terms = array();
$output_terms[''] = '-- Selecione --';
$terms = get_terms( 'acomp_category', array( 'hide_empty' => false ) );
foreach ($terms as $term)
$output_terms[ $term->term_id ] = $term->name;
return $output_terms;
}
Isso dai é apenas para listar e dar as opções com os IDs. PRecisa ver se acertou no nome da sua taxonomia xD
Oi pessoal, alguém por ai? Então eu ainda estou com esse erro cabuloso ... e ele está perturbando meu cérebro.
A Taxonomia é válida, existe e tem 3 terms cadastrados nela... mas eu fiu dando prints no arquivo class-post-form.php
para tentar localizar onde ele me bloqueia e bem no método save_terms()
a função do Wordpress wp_set_post_terms()
retorna o objeto de erro do Wordpress.. WP_Error
onde diz a seguinte mensagem:
WP_Error Object
(
[errors:WP_Error:private] => Array
(
[invalid_taxonomy] => Array
(
[0] => Taxonomia inválida
)
)
[error_data:WP_Error:private] => Array
(
)
)
Pesquisando sobre esse tipo de erro eu notei que não é só da função wp_set_post_terms()
mas de outras também como a get_terms()
e a get_the_terms()
como no caso desse cara aqui -> http://wordpress.aspcode.net/view/63538464303732726694401/wordpress-function-gettheterms-returns-invalid-taxonomy-error
Parece que se não tiver carregado o Wordpress por completo ele não consegue localizar a taxonomia e retorna "Taxonomia inválida"... :weary:
Eu ainda não sou um cara Supermotherfucker do Wordpress por isso estou pedindo um help aqui, algum guru por favor me ajude a identificar porque ele não reconhece minha taxonomia, existe algum gancho, uma action ou filtro para ele reconhecer? :grin:
Sem mais, grato.
O problema talvez seria que as classes do Odin são inclusas no funcions.php
antes de qualquer outra função do tema... inclusive a classe class-post-form.php
onde está essa função wp_set_post_terms()
... então pela lógica estou tentando localizar minha taxonomia sem antes registrar ela com register_taxonomy()
? :confused:
É só um palpite, e se for isso mesmo eu não faço a minima ideia de como resolver... :sweat:
Olá, estou utilizando a classe Odin_Post_Form para criar um formulário em um projeto aqui.
Estou tentando atualizar o termo selecionado no formulário com o método
set_terms($terms)
o parâmetro passado nesse método é um array que é utilizado no métodosave_terms()
onde ele faz um foreach com esse array...foreach ( $this->terms as $taxonomy => $term ) {
Bom, o problema é que eu não estou conseguindo montar esse array da forma correta, pelo menos todos que eu tentei por aqui não deram certo.
Analisando esse foreach parece que ele precisa de um array assim:
$terms = array( $taxonomy => $term )
... Seria isso?Eu tentei assim:
Assim:
E assim:
Em que estou errando? Grato.