/ / get_categories para Custom Post Type - wordpress, custom-post-type

get_categories para o tipo de postagem personalizada - wordpress, custom-post-type

Eu tenho um tipo de postagem personalizado, "ioni_codex" Estou usando a categoria interna do Wordpress como taxonomia

Quero listar todas as categorias usadas por "ioni_codex".

Eu assumo que este código fará o truque:

$myargs = array (
"type" => "ioni_codex"
);
$categories = get_categories( $myargs );

No entanto, em vez disso, vejo a lista de todas as categorias não as categorias atribuídas por "ioni_codex".

O que estou fazendo de errado?

Respostas:

3 para resposta № 1

get_categories() não aceita post_type como argumento, use taxonomy em vez disso, consulte a taxonomia pelo nome que você deu ao registrá-la. Aqui está um link para o códice que pode explicá-lo em mais detalhes - http://codex.wordpress.org/Function_Reference/get_categories.


0 para resposta № 2

Eu tenho uma resposta em um projeto associado: O Bainternet ♦ reescreveu a função get_terms () para fornecer o post_type

Por favor, consulte a sua solução Aqui ou copie e cole a partir de baixo:

/* get terms limited to post type
@ $taxonomies - (string|array) (required) The taxonomies to retrieve terms from.
@ $args  -  (string|array) all Possible Arguments of get_terms http://codex.wordpress.org/Function_Reference/get_terms
@ $post_type - (string|array) of post types to limit the terms to
@ $fields - (string) What to return (default all) accepts ID,name,all,get_terms.
if you want to use get_terms arguments then $fields must be set to "get_terms"
*/
function get_terms_by_post_type($taxonomies,$args,$post_type,$fields = "all"){
$args = array(
"post_type" => (array)$post_type,
"posts_per_page" => -1
);
$the_query = new WP_Query( $args );
$terms = array();
while ($the_query->have_posts()){
$the_query->the_post();
$curent_terms = wp_get_object_terms( $post->ID, $taxonomy);
foreach ($curent_terms as $t){
//avoid duplicates
if (!in_array($t,$terms)){
$terms[] = $c;
}
}
}
wp_reset_query();
//return array of term objects
if ($fields == "all")
return $terms;
//return array of term ID"s
if ($fields == "ID"){
foreach ($terms as $t){
$re[] = $t->term_id;
}
return $re;
}
//return array of term names
if ($fields == "name"){
foreach ($terms as $t){
$re[] = $t->name;
}
return $re;
}
// get terms with get_terms arguments
if ($fields == "get_terms"){
$terms2 = get_terms( $taxonomies, $args );
foreach ($terms as $t){
if (in_array($t,$terms2)){
$re[] = $t;
}
}
return $re;
}
}