如果我发布的仅附加到它们,如何在仪表板中调用类别?

How to call category in dashboard if mine posted is attached to them only?

我正在制作用户仪表板并为类别创建一个仪表板小部件。现在,如果当前用户的 post 附加到他们,我想显示类别。

目前我可以看到所有类别。 这是我的功能

function user_categories() {

wp_add_dashboard_widget(
             'wp_widget_category',         // Widget slug.
             'Categories',         // Title.
             'my_dashboard_category' // Display function.
    );  
function my_dashboard_category() {
     if ( is_user_logged_in() ):
        $current_user = wp_get_current_user();

    if ( ($current_user instanceof WP_User) ) {
        ?>

        <?php
        $args = array(
            'type'                     => 'recipes',
            'child_of'                 => 0,
            'parent'                   => '',
            'orderby'                  => 'name',
            'order'                    => 'ASC',
            'hide_empty'               => 1,
            'author'                   => $current_user->ID,
            'hierarchical'             => 1,
            'exclude'                  => '',
            'include'                  => '',
            'number'                   => '',
            'taxonomy'                 => 'recipe_categories',
            'pad_counts'               => false );

        $categories = get_categories($args);
        foreach ($categories as $category) {
            $url = get_term_link($category);?>
        <div class="submitted_recipe">
            <a href="<?php echo $url;?>"><?php echo do_shortcode(sprintf('[wp_custom_image_category size="large_blog" term_id="%s"]',$category->term_id)); ?>
                <h2><?php echo $category->name; ?></h2>
        </a>
            </div>
        <?php
        }
        ?>

    <?php
    }
    endif;
    }
}
add_action( 'wp_dashboard_setup', 'user_categories' );

您需要查询每个分类下的所有用户帖子,如果不为空则包含该分类。试试这个修改后的代码

function user_categories() {

wp_add_dashboard_widget(
             'wp_widget_category',         // Widget slug.
             'Categories',         // Title.
             'my_dashboard_category' // Display function.
    );  


function my_dashboard_category() {
     if ( is_user_logged_in() ):
        $current_user = wp_get_current_user();

    if ( ($current_user instanceof WP_User) ) {
        ?>

        <?php
        $args = array(
            'child_of'                 => 0,
            'parent'                   => '',
            'orderby'                  => 'name',
            'order'                    => 'ASC',
            'hide_empty'               => 1,
            'hierarchical'             => 1,
            'exclude'                  => '',
            'include'                  => '',
            'number'                   => '',
            'taxonomy'                 => 'recipe_categories',
            'pad_counts'               => false );

        $categories = get_categories($args);
        foreach ($categories as $category) {
            $posts_query = new WP_Query( array(
                'post_type' => 'recipes',
                'author' => $current_user->ID,
                'tax_query' => array(
                    array('taxonomy' => 'recipe_categories',
                    'field' => 'slug',
                    'terms' => $category->slug)
                ),
                'fields' => 'ids'
            ) );
            $ids = $posts_query->posts;
            if (!empty ($ids)) {
            $url = get_term_link($category);?>
        <div class="submitted_recipe">
            <a href="<?php echo $url;?>"><?php echo do_shortcode(sprintf('[wp_custom_image_category size="large_blog" term_id="%s"]',$category->term_id)); ?>
                <h2><?php echo $category->name; ?></h2>
        </a>
            </div>
        <?php
            }
        }
        ?>

    <?php
    }
    endif;
    }
}
add_action( 'wp_dashboard_setup', 'user_categories' );