Php Wordpress中带有本机列表类的自定义类别列表

Php Wordpress中带有本机列表类的自定义类别列表,php,wordpress,widget,categories,Php,Wordpress,Widget,Categories,尝试在侧边栏中构建自定义类别列表,第一部分成功,但无法正确使用wordpresswp\u List\u categories() 基本上,我的小部件创建了一个类别ID数组,标记为“新建” 现在我需要创建一个所有类别的列表,其中ID为-1的类别和ID为-5的类别将显示为 <li class="cat-item cat-item-1"><span style="color:red;">New!</span> <a href="/blog/category/m

尝试在侧边栏中构建自定义类别列表,第一部分成功,但无法正确使用wordpress
wp\u List\u categories()

基本上,我的小部件创建了一个类别ID数组,标记为“新建”

现在我需要创建一个所有类别的列表,其中ID为-1的类别和ID为-5的类别将显示为

<li class="cat-item cat-item-1"><span style="color:red;">New!</span> <a href="/blog/category/mycategory1" title="mycategory special offer"><b>My Category 1</b></a></li>
<li class="cat-item cat-item-3"><a href="/blog/category/mycategory2" title="mycategory special offer">My Category 2</a></li>
<li class="cat-item cat-item-5"><span style="color:red;">New!</span> <a href="/blog/category/mycategory3" title="mycategory special offer 3"><b>My Category 2</b></a></li>
新的
  • 新的 一、 由于某种原因,我们无法使用

    `wp_list_categories()` as it prints all categories out on the screen.
    
            $widget_instances = get_option('widget_custom_categories_widget');
            echo '<ul>';
            foreach ( $categories as $category ) {
                foreach ($widget_instances as $cat_key) {
                    foreach ($cat_key['categories'] as $key) {
                        if($category->term_id == $key){
                            printf('<li class="cat-item cat-item-%3$s"><span style="color: red;">New!</span> <a href="%1$s"><strong>%2$s</strong></a></li>',
                                esc_url(get_category_link($category->term_id)),
                                esc_html($category->name),
                                esc_html($category->term_id)
                            );
                        }else{
                            printf('<li class="cat-item cat-item-%3$s"><a href="%1$s">%2$s</a></li>',
                                esc_url(get_category_link($category->term_id)),
                                esc_html($category->name),
                                esc_html($category->term_id)
                            );
                        }
                    }
                }
            }
            echo '<ul>';
    
    `wp_list_categories()`将所有类别打印在屏幕上。
    $widget_instances=get_选项('widget_custom_categories_widget');
    回声“
      ”; foreach($categories作为$category){ foreach($widget\u实例作为$cat\u密钥){ foreach($cat_key['categories']作为$key){ 如果($category->term_id==$key){ printf(“
    • 新建!
    • ”, esc_url(获取分类链接($category->term_id)), esc_html($category->name), esc_html($category->term_id) ); }否则{ printf(“
    • ”, esc_url(获取分类链接($category->term_id)), esc_html($category->name), esc_html($category->term_id) ); } } } } 回声“
        ”;
    我正在使用上面代码的图片,但现在我有另一个问题,所有类别都打印了两次,一次带有“New!”标签,一次没有

    与嵌套的
    foreach
    语句有关,但无法找到它


    请提供任何帮助或建议

    如果您的数组
    $widget\u实例每次都返回您提供的数组结构,则此技巧可能会对您有所帮助:

    $cat_id = $widget_instances[2]['categories'];
    echo '<ul>';
    foreach ($categories as $category) {
        if (in_array($category->term_id, $cat_id)) {
            printf('<li class="cat-item cat-item-%3$s"><span style="color: red;">New!</span> <a href="%1$s"><strong>%2$s</strong></a></li>',
                esc_url(get_category_link($category->term_id)),
                esc_html($category->name),
                esc_html($category->term_id)
            );
        } else {
            printf('<li class="cat-item cat-item-%3$s"><a href="%1$s">%2$s</a></li>',
                esc_url(get_category_link($category->term_id)),
                esc_html($category->name),
                esc_html($category->term_id)
            );
        }
    }
    echo '<ul>';
    
    $cat_id=$widget_实例[2]['categories'];
    回声“
      ”; foreach($categories作为$category){ if(在数组中($category->term\u id,$cat\u id)){ printf(“
    • 新建!
    • ”, esc_url(获取分类链接($category->term_id)), esc_html($category->name), esc_html($category->term_id) ); }否则{ printf(“
    • ”, esc_url(获取分类链接($category->term_id)), esc_html($category->name), esc_html($category->term_id) ); } } 回声“
        ”;
    正如我所知,您不能添加类,只能将部分结果包装到一些标记中<代码>wp_列表_类别
    将所有
    类别
    包装到span中。您可以使用
    get_categories()
    :,使用您需要的参数进行查询,然后使用foreachHello Samvel创建类别列表,谢谢您的评论,我刚刚更新了我的问题,请看一看,看您是否能解决它。提前谢谢谢谢谢谢!!!它起作用了,只是我不得不更改
    $cat\u id=$widget\u实例[0]['categories']
    $cat_id=$widget_实例[2]['categories']
    
    $cat_id = $widget_instances[2]['categories'];
    echo '<ul>';
    foreach ($categories as $category) {
        if (in_array($category->term_id, $cat_id)) {
            printf('<li class="cat-item cat-item-%3$s"><span style="color: red;">New!</span> <a href="%1$s"><strong>%2$s</strong></a></li>',
                esc_url(get_category_link($category->term_id)),
                esc_html($category->name),
                esc_html($category->term_id)
            );
        } else {
            printf('<li class="cat-item cat-item-%3$s"><a href="%1$s">%2$s</a></li>',
                esc_url(get_category_link($category->term_id)),
                esc_html($category->name),
                esc_html($category->term_id)
            );
        }
    }
    echo '<ul>';