author.php не показывает контент, если у автора нет сообщений - PullRequest
0 голосов
/ 23 ноября 2018

Я делаю собственную тему Genesis и у меня есть собственный файл author.php, который извлекает различные настраиваемые поля (с использованием расширенных настраиваемых полей), и метаинформацию автора на страницу со страницы профиля автора ... Он также отображаетих последние сообщения.

Это отлично работает, если у автора есть назначенные ему сообщения.Если они этого не делают, страница не выводит никакого содержимого, которое обычно извлекается из профиля авторов ...

Я искал StackExchange, и хотя это уже упоминалось несколько раз, яне могу найти ответ, который работает.

Мне нужна страница author.php для вывода информации об авторе, независимо от того, есть у пользователя сообщения или нет.Если это не так, мета-профиль и настраиваемые поля по-прежнему должны отображаться, а в разделе последних сообщений не должно отображаться никаких сообщений.

Вот мой код author.php.

// remove Genesis default loop
remove_action( 'genesis_loop', 'genesis_do_loop' );

// Remove Header Markup
remove_action( 'genesis_entry_header', 'genesis_entry_header_markup_open', 5 );
remove_action( 'genesis_entry_header', 'genesis_entry_header_markup_close', 15 );
remove_action( 'genesis_entry_header', 'genesis_do_post_title' );
remove_action( 'genesis_before_loop', 'genesis_do_author_title_description', 15 );

//remove the default sidebar widget setup
remove_action( 'genesis_sidebar', 'genesis_do_sidebar' );
remove_action( 'genesis_sidebar_alt', 'genesis_do_sidebar_alt' );

// Add in the layout sections
add_action('genesis_loop','add_top_author_section');
add_action('genesis_sidebar','add_sidebar_info');
add_action('genesis_after_content_sidebar_wrap', 'add_latest_posts');


function add_top_author_section() { 
    //vars
        $avatar = get_avatar( get_the_author_meta( 'ID' ), apply_filters( 'th_author_bio_avatar_size', 300 )  );
        $display_name = get_the_author_meta( 'display_name' );
    ?>
    <div class="author-details">
            <div class="left-profile">
                <?php echo $avatar; ?>
            </div>
            <div class="right-profile">
                <h2><?php echo $display_name; ?></h2>
                <p><?php the_author_meta('description'); ?>
            </div>
    </div>
<?php
}

function add_sidebar_info() {  

    // Cuisines
    $user_id = get_the_author_meta( 'ID' );
    $display_id = 'user_'.$user_id;

    $terms = get_field('types_of_cuisine2', $display_id);

    if ( $terms ) { 
        echo '<div class="widget-sidebar-section cuisines"><h2>Cuisines</h2>';
        foreach ( $terms as $term ) :?>
            <a href="http://tastehaus.flywheelsites.com/recipes/?_sfm_cuisine=<?php echo $term; ?>"><?php echo $term; ?></a>

        <?php endforeach; 
        echo '</div>';
        } 

    // Based In
    echo '<div class="widget-sidebar-section based-in"><h2>Based In</h2>';
    the_field('based_in', $display_id); 
    echo '</div>';

    // Status
    echo '<div class="widget-sidebar-section status"><h2>Status</h2>';
    the_field('status', $display_id); 
    echo '</div>';  

    // Signature Dish
    echo '<div class="widget-sidebar-section sig-dish"><h2>Signature Dish</h2>';
    the_field('signature_dish', $display_id); 
    echo '</div>';  

    // Amazon Store Button
    ?>
    <a href="<?php the_field('amazon_store_link', $display_id);?>"><button>See My Recommended Tools</button> </a>
<?
}


function add_latest_posts() { 

    echo '<div class="user-latest-posts">';
    echo '<h2 style="text-align:center;">Recent Posts by '.  get_the_author_meta( 'first_name' ) .'</h2>';
    echo '</div>';

    global $post;
    // arguments, adjust as needed
    $args2 = array(
        'author'            =>  get_the_author_meta( 'ID' ), 
        'post_type' => array( 'recipes', 'tools', ), 
        'orderby'           =>  'post_date',
        'order'             =>  'ASC',
        'posts_per_page'    =>  6,
    );
    /* 
    Overwrite $wp_query with our new query.
    The only reason we're doing this is so the pagination functions work,
    since they use $wp_query. 
    */
    global $wp_query;
    $wp_query = new WP_Query( $args2 );
    if ( have_posts() ) : 
        echo '<div class="posts-query">';
        while ( have_posts() ) : the_post(); ?>
                <div class="query-post">
                        <div class="query-padding">
                            <div clss="posts-image">
                                <?php the_post_thumbnail("thumbnail");?>
                            </div>
                            <div class="post-categories">
                            <?php $postType = get_post_type_object(get_post_type());
                                if ($postType) {
                                echo esc_html($postType->labels->singular_name);
                                } 
                            ?>
                            </div>                          
                            <div class="posts-title">
                                <a href="<?php the_permalink(); ?>">
                                    <h3> 
                                        <?php the_title() ?>
                                    </h3>
                                </a>
                            </div>
                        </div>
                    </div>
        <? endwhile; 
        echo '</div>';
        do_action( 'genesis_after_endwhile' );
    endif;
    wp_reset_query();
}
genesis();
...