Как вызвать категорию в dashboard, если mine posted прикреплен только к ним?

Я делаю пользовательскую панель мониторинга и создаю виджет панели мониторинга для категории. Теперь я хочу показать категорию, если к ним прикреплен пост текущего пользователя.

В настоящее время я могу видеть все категории.
Вот моя функция

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' );

1 ответ

  1. Вы должны запросить все записи пользователей в каждой категории, если она не пуста, то включите эту категорию. попробуйте этот пересмотренный код

    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' );