Suporte » Desenvolvendo com WordPress » Pegar id's das categorias descendentes

  • Resolvido danchristiano

    (@danchristiano)


    Olá, pessoal!

    Uso um plugin (WP-PostViews) que lista os posts mais vistos. Uma opção é mostrar os mais vistos da categoria. Por padrão, ele não considera posts de categoria filho dentro da categoria pai.

    Todavia, a variável para a qual informo a ID da categoria pai aceita uma array com as ID’s das categorias que desejo, mais ou menos assim:

    get_most_viewed_category(5); //assim
    get_most_viewed_category(<strong>array(1,2,3,4,5)</strong>); //ou assim

    Já sei como obter as ID’s das categorias filho e, pelo que pesquisei, sei que a função será mais ou menos assim:

    $the_cat = get_categories('child_of='.$cat);
    	foreach($the_cat as $category) {
    		$category = $category->cat_ID;
    		$category = array($category,'');
        }
    	get_most_viewed_category($category); // ou array($category)

    A questão, então, é fazer com que a variável $category (array com as ID’s) se encaixe no mesmo lugar da expressão array(1,2,3,4,5).

    Obs: a array que o plugin aceita é de inteiros.

Visualizando 6 respostas - 1 até 6 (de um total de 6)
  • Detro do foreach dê um var_dunp() para saber o que vem e se tem alguma parâmetro que identifique categorias pai e filhas

    exemplo

    $the_cat = get_categories('child_of='.$cat);
    foreach($the_cat as $category) {
       $category = $category->cat_ID;
       $category = array($category,'');
       var_dump($category);
    }

    Criador do tópico danchristiano

    (@danchristiano)

    Perfeito!

    A saída do var_dump($category) é a seguinte:

    1018array(2) { [0]=> string(4) "1018" [1]=> string(0) "" } 1014array(2) { [0]=> string(4) "1014" [1]=> string(0) "" } 1017array(2) { [0]=> string(4) "1017" [1]=> string(0) "" } 1015array(2) { [0]=> string(4) "1015" [1]=> string(0) "" } 1016array(2) { [0]=> string(4) "1016" [1]=> string(0) "" }

    Fiz o teste na categoria pai 8 e sei que as categorias filho são 1014, 1015, 1016, 1017 e 1018.

    Ao que parece, a variável $category me retorna as IDs corretas (só quero as IDs das categorias filho). Porém, não estou sabendo como extrair dessa array de strings a sequência de inteiros que preciso para chamar a função.

    get_most_viewed_category(array(1014, 1015, 1016, 1017, 1018));

    Acho que está fácil, mas como faz uns bons anos que não programo, travei nesse ponto!

    Muito obrigado!

    Acho que o problema está no $cat do child_of, já tentou usar no lugar de child_of usar parent

    child_of e parent são muito semelhantes, mas com algumas diferenças.

    Veja mais.
    http://codex.wordpress.org/Function_Reference/get_categories

    Criador do tópico danchristiano

    (@danchristiano)

    Myst1010,

    Fiz uma bobagem: além do resultado var_dump($category), esqueci um echo $category no meu código. Desconsidere!

    Meu código atual é:

    ` $the_cat = get_categories(‘hide_empty=0&child_of=’.$cat);
    foreach($the_cat as $category) {
    $category = (int)$category->cat_ID;
    var_dump($category);
    }`

    O resultado do var_dump é:

    int(1018) int(1014) int(1017) int(1015) int(1016)

    Usei o parâmetro parent no lugar de child_of e o retorno do var_dump é exatamente o mesmo. No mais, a array $category está aparentemente com o resultado esperado, pois todas as IDs são listadas aí. Meu problema é saber como daí obter o seguinte resultado (exemplo):

    get_most_viewed_category(array(1018,1014,1017,1015,1016));

    Muito obrigado!

    Criador do tópico danchristiano

    (@danchristiano)

    Resovido!

    Usei a função array_push() para adicionar cada ID obtido no loop foreach no final da array que seria passada como parâmetro.

    `<?php
    $the_cat = get_categories(‘hide_empty=0&child_of=’.$cat);
    $category_ids = array();
    foreach($the_cat as $category) {
    array_push($category_ids, (int)$category->cat_ID);
    }
    get_most_viewed_category($category_ids, ‘both’, 5);
    ?>`

    Interessante, boa solução.

Visualizando 6 respostas - 1 até 6 (de um total de 6)
  • O tópico ‘Pegar id's das categorias descendentes’ está fechado para novas respostas.