Как да покажете списъка с категории на wordpress с техните идентификатори

Може ли някой да ми каже как да показвам моите категории на wordpress (родители и деца) заедно с техните идентификатори. искам да ги отпечатате по следния начин:

Европа, Обединено кралство, Лондон (Европа е родителска категория, а техните деца Обединено кралство) 10,20,33 (това са техните идентификатори)

Европа, Франция, Париж 10,22,45

Европа, Франция, Кан 10,22,49

Опитах този код, но не работи за мен:

     <?php  
$categories = get_the_category();
 $this_cat_ID = $categories[0]->cat_ID;
 $this_cat_name = $categories[0]->cat_name;
 $this_cat_url = get_category_link($this_cat_ID);
 // get the sub category if we have them
 foreach ($categories as $cat) {
    $parent = $cat->category_parent;
    if ($parent != 0 ){
       $sub_cat_ID = $cat->cat_ID;
       $sub_cat_name = $cat->cat_name;
       $sub_cat_url = get_category_link($sub_cat_ID);
    }
 }
 if (!$sub_cat_ID) {
   echo $this_cat_ID;
} else {
   echo $sub_cat_ID;
}
?>

Помощта ви е високо ценена, благодаря ви


person Ahmed Taoussi    schedule 02.04.2013    source източник
comment
какво си пробвал Моля, прочетете ЧЗВ за това как да зададете въпрос.   -  person brbcoding    schedule 02.04.2013
comment
Искате ли всички ваши категории или само категориите, свързани с конкретна публикация.   -  person Peter Wooster    schedule 02.04.2013
comment
Питър, искам идентификаторите на всички мои категории и техните деца и децата на децата. Благодаря   -  person Ahmed Taoussi    schedule 03.04.2013
comment
Актуализирах отговора, за да отразява версията на вашия сайт.   -  person Peter Wooster    schedule 04.04.2013
comment
Да, работи, просто страхотно.   -  person Ahmed Taoussi    schedule 04.04.2013


Отговори (3)


Функцията на WordPress wp_list_categories ще върне списък с всички категории. Ако зададете йерархичния флаг на true, ще получите цялата йерархия. Прочетете статията от кодекса във връзката по-горе за подробности.

Има и функция get_categories, която връща неформатиран резултат. Можете да използвате това във вашия собствен PHP код.

Трети избор е да прочетете базата данни, има три таблици wp_terms, wp_term_taxonomy и wp_term_relationships, които съдържат дървото на категориите. Ето структурата на базата данни.

Редактиране: Ето кратък код, който ще създаде подобен списък като вложена колекция от списъци:

function show_categories($atts, $content) {
    extract( shortcode_atts( array('taxonomy' => 'category'), $atts ) );
    $cats = get_categories(array('taxonomy' => $taxonomy,'hide_empty' => 0, 'hierarchical' => 0, 'parent' => 0));
    return show_categories_level($cats, '', '', $taxonomy);
}

function show_categories_level($cats, $names, $ids,$taxonomy) {
    $res = '<ul>';
    foreach ($cats as $cat) {
        if($names)$n = "$names, $cat->name"; else $n = $cat->name;
        if($ids)$i = "$ids, $cat->term_id"; else $i = $cat->term_id;    
        $res = $res."<li>$n : $i</li>";
        $kittens = get_categories(array('taxonomy' => $taxonomy,'hide_empty' => 0, 'hierarchical' => 0, 'parent' =>$cat->term_id));
        if($kittens) {
            $res .= ("<li>".show_categories_level($kittens, $n, $i, $taxonomy)."</li>");
        }
    }
    return $res."</ul>";
}
add_shortcode('show-categories', 'show_categories');

За да използвате това, добавете този код към вашия functions.php и добавете краткия код, където искате да се показва:

<h2>Default Categories</h2>
[show-categories]

или можете да посочите таксономия, която искате да бъде включена в списъка

<h2>My Taxonomy Categories</h2>
[show-categories taxonomy="my_taxonomy"]

Това не е най-ефективният начин за постигане на този резултат, но тук работи. Ако сте започнали с йерархичната версия на get_categories или сте използвали базата данни, можете да получите по-бърза версия на това.

person Peter Wooster    schedule 02.04.2013
comment
Благодаря, Питър за бързия ви отговор, можете ли да ми кажете кода, защото не съм добър в php. - person Ahmed Taoussi; 02.04.2013
comment
Страхувам се, сър, наистина оценявам вашата доброта и опитите да ми помогнете, но кодът не работи за мен. Всъщност добавих първия код към functions.php и краткия код към catlist.php. Всичко, което виждам обаче, е: Категории на магазина [show-categories taxonomy=shopp_category] Категории по подразбиране [show-categories] - person Ahmed Taoussi; 03.04.2013
comment
ако виждате [] на страницата, това означава, че шорткодовете не работят. Можете ли да проверите дали кодът за инсталирането им (add_shortcode) действително се изпълнява? - person Peter Wooster; 04.04.2013
comment
Краткият код работи само на публикации и страници. за да го използвате в php код, трябва да използвате функцията do_shortcode. - person Peter Wooster; 04.04.2013
comment
Питър, вашият код работи безупречно. Браво Петър. Благодаря ти. - person Ahmed Taoussi; 04.04.2013

Къде искате да покажете това? вътрешен цикъл? навън? в single.php? category.php? .....?

Ако искате да го покажете на отделно място, включете първо wp-load.php, като това

<? php


header('Content-Type: text/html; charset: UTF-8');
require( '../../../../wp-load.php' ); // use the path which will fit your situation

$my_query = new WP_Query();
$my_query->query(array(
          'post_type' => 'post',
          'orderby'   => 'title',
          'order'     => 'ASC',
        ));

if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post(); 

// use your code here after checking codex

endwhile;
endif;
?>
person Adib Aroui    schedule 02.04.2013
comment
ако все още не знаете как да използвате това, обещавам утре да дам пълния изходен код. но съветвам да се задълбочите, за да научите. Wordpress е голям полезен свят. а+ - person Adib Aroui; 02.04.2013
comment
Така мило от ваша страна, буквите и празните интервали, не съм много добър в php, ако можете да дадете пълен код, за да ми помогнете, ще съм ви благодарен. - person Ahmed Taoussi; 03.04.2013
comment
къде си в това не ми отговори на въпроса! Къде искате да покажете това? вътрешен цикъл? навън? в single.php? category.php? .....? на отделно обичайно място? - person Adib Aroui; 05.04.2013

Това, което искам да направя, е следното: Стъпките, които следвах (моля, проверете тази връзка)

Искам да променя само този код:

<ul> <?php wp_list_categories('show_count=1&title_li=&hide_empty=0'); ?></ul>

така че списъкът на всички категории и техните подчинени ще бъдат показани заедно с техните идентификатори в този формат:

Пример: Европа, Обединено кралство, Лондон, Ийст Хем: 25,28,34,36 това е само една родителска категория (Европа) и нейните дъщери (Великобритания), дъщерната част на Обединеното кралство е Лондон, а детето на Лондон е Ийст Хем. 25 е идентификаторът на Европа, 28 е идентификаторът на Великобритания, 34 е идентификаторът на Лондон, 36 е идентификаторът на Ийст Хем

Моля, обърнете внимание: Просто искам да покажа този списък на страница, както е описано в връзката по-горе. Много благодаря

person Ahmed Taoussi    schedule 03.04.2013
comment
Добавих някакъв код към моя отговор, който създава списък, какъвто искате. - person Peter Wooster; 03.04.2013