Отображение имени пользователя автора и биографии на custom author.php

Вопрос или проблема

У меня есть код, который я использую для создания кастомного author.php, который отлично показывает посты пользователя и их дочерние посты и т. д.:

 <?php get_header(); ?>


 <?php $curauth = (isset($_GET['author_name'])) ? get_user_by('slug',   $author_name) :     get_userdata(intval($author)); ?>


 <div class="auth-name">
 <?php if ( '' != get_the_author_meta( 'user_description' ) ) echo  apply_filters( 'archive_meta', get_the_author_meta( 'display_name' )); ?  >
 </div>

 <div class="auth-desc">
 <?php if ( '' != get_the_author_meta( 'user_description' ) ) echo    apply_filters( 'archive_meta', get_the_author_meta( 'user_description' ));   ?>
 </div>



 <div class="header">


 <h1>Создано ведерок (<?php $children = get_posts( array( 'author' =>  $curauth->ID, 'category_name' => 'Bucket', ) ); echo count($children);?>)  </h1>
 <a href="https://wordpress.stackexchange.com/add-a-bucket"><span class="big-bucket"> Добавить новое ведерко</span></a>
 </div>

 </div>





 <div class="content">
  <ul class="stash-container">



  <?php
  $args = array( 'post_type' => 'bucket','post_parent' => 0 ,'author' => $curauth->ID,'posts_per_page' => -1 ); ?>
  <?php $loop = new WP_Query( $args ); ?>
  <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>


  <li class="buckets">
   <a href="<?php echo get_the_permalink($site->ID); ?>">

      <div class="rollover-bucket"> 


  </div>
  </a>

  <div class="r-text"> 

  <?php do_action('gform_update_post/edit_link', array(
  'post_id' => $post->ID,
  'url'     => 'http://buckets.me/edit-bucket/',
  'text'   => 'редактировать', 
   ) ); ?>


   <?php echo delete_post_bucket($post->ID); ?>



   </div>



  <div class="empty-state-thumb">
  Это ведерко пусто!
  </div>
  <div class="display-block">



  <?php
  global $authordata, $post;
  $parent = array( 'post_type' => 'bucket','post_parent' => $post->ID,    'post_status' => 'publish' ,'author' => $curauth->ID,'posts_per_page' => -1    );
  $my_meta = get_post_meta( $post->ID, 'connect', true);
  $portfolio_sections = array(
 'post_type'   => 'bucket',
 'author' => $curauth->ID,
 'category_name' => 'drop',
 'orderby' => 'rand',
 'posts_per_page' => 4,
 'post_parent' => $parent, 
  'sort_order'  => 'ASC',
  'meta_query' => array(
  array(
 'key' => 'connect',
 'value' => $my_meta,
  'compare' => '=' )
  )
  );

  $sections = get_posts($portfolio_sections);
  foreach ($sections as $section) { ?>



  <img src="http://api.screenshotmachine.com/?  key=8d5e59&size=M&format=png&url=<?php echo get_post_meta($section->ID,    'the_url', true);?>">





  <?php } ?>


  </div>

  <div class="botsy">

  <a href="<?php the_permalink(); ?>">
      <?php the_title(); ?>
  </a>
  <div class="botsy-det">

  <?php
  $cc = get_the_content();
  if($cc != '') { ?>
  <?php $content = get_the_content(); echo mb_strimwidth($content, 0, 96, '...');?>
  <?php } else { ?>
  <div class="empty-lines"></div>
  <div class="empty-lines"></div>
  <div class="empty-lines"></div>
  <?php } ?>


  </div>

  </div>




  </li>




   <?php endwhile; ?>
   </ul>


   <?php get_footer(); ?>

Но по какой-то причине имя пользователя и биография не отображаются вверху. Я почти уверен, что на каком-то этапе процесса разработки все работало нормально. Может быть, это конфликтующий плагин или я просто туплю?

Спасибо!

Отсортировано следующим образом:

<div class="auth-name">
<?php echo $curauth->nickname; ?>
</div>

<div class="auth-desc">
<?php echo $curauth->description; ?>
</div>

Ответ или решение

Чтобы исправить проблему с отображением имени пользователя и биографии на вашей кастомной странице автора (author.php), вам нужно убедиться, что вы правильно извлекаете информацию о пользователе. Судя по вашему коду, вы используете переменную $curauth, чтобы получить данные о текущем авторе, однако вы не используете её правильно для вывода имени пользователя и описания.

Вот как вы можете скорректировать код для отображения имени пользователя и его биографии:

<?php get_header(); ?>

<?php
$curauth = (isset($_GET['author_name'])) ? get_user_by('slug', $_GET['author_name']) : get_userdata(intval($author));
?>

<div class="auth-name">
    <?php echo esc_html($curauth->nickname); // Имя пользователя ?>
</div>

<div class="auth-desc">
    <?php echo esc_html($curauth->description); // Биография автора ?>
</div>

<div class="header">
    <h1>Buckets made (<?php $children = get_posts(array('author' => $curauth->ID, 'category_name' => 'Bucket')); echo count($children); ?>)</h1>
    <a href="https://wordpress.stackexchange.com/add-a-bucket"><span class="big-bucket"> Add a new bucket</span></a>
</div>

</div>

<div class="content">
    <ul class="stash-container">
        <?php
        $args = array('post_type' => 'bucket', 'post_parent' => 0, 'author' => $curauth->ID, 'posts_per_page' => -1);
        ?>
        <?php $loop = new WP_Query($args); ?>
        <?php while ($loop->have_posts()) : $loop->the_post(); ?>
            <li class="buckets">
                <a href="<?php echo esc_url(get_the_permalink()); ?>">
                    <div class="rollover-bucket"></div>
                </a>

                <div class="r-text">
                    <?php do_action('gform_update_post/edit_link', array(
                        'post_id' => $post->ID,
                        'url' => 'http://buckets.me/edit-bucket/',
                        'text' => 'edit',
                    )); ?>
                    <?php echo delete_post_bucket($post->ID); ?>
                </div>

                <div class="empty-state-thumb">This bucket is empty!</div>
                <div class="display-block">
                    <?php
                    global $authordata, $post;
                    $parent = array('post_type' => 'bucket', 'post_parent' => $post->ID, 'post_status' => 'publish', 'author' => $curauth->ID, 'posts_per_page' => -1);
                    $my_meta = get_post_meta($post->ID, 'connect', true);
                    $portfolio_sections = array(
                        'post_type' => 'bucket',
                        'author' => $curauth->ID,
                        'category_name' => 'drop',
                        'orderby' => 'rand',
                        'posts_per_page' => 4,
                        'post_parent' => $parent,
                        'sort_order' => 'ASC',
                        'meta_query' => array(
                            array(
                                'key' => 'connect',
                                'value' => $my_meta,
                                'compare' => '='
                            )
                        )
                    );

                    $sections = get_posts($portfolio_sections);
                    foreach ($sections as $section) { ?>
                        <img src="http://api.screenshotmachine.com/?key=8d5e59&size=M&format=png&url=<?php echo esc_url(get_post_meta($section->ID, 'the_url', true)); ?>">
                    <?php } ?>
                </div>

                <div class="botsy">
                    <a href="<?php the_permalink(); ?>">
                        <?php the_title(); ?>
                    </a>
                    <div class="botsy-det">
                        <?php
                        $cc = get_the_content();
                        if ($cc != '') { ?>
                            <?php $content = get_the_content(); echo mb_strimwidth($content, 0, 96, '...'); ?>
                        <?php } else { ?>
                            <div class="empty-lines"></div>
                            <div class="empty-lines"></div>
                            <div class="empty-lines"></div>
                        <?php } ?>
                    </div>
                </div>
            </li>
        <?php endwhile; ?>
    </ul>

<?php get_footer(); ?>

Объяснение исправлений:

  1. Получение имени пользователя и его биографии: Вместо get_the_author_meta(), используйте $curauth->nickname для имени пользователя и $curauth->description для биографии. Это обеспечит доступ к правильным данным текущего автора.

  2. Очистка вывода: Используйте функции esc_html() и esc_url(), чтобы защитить вывод от XSS-угроз и ошибок форматирования.

  3. Проверка корректности переменных: Убедитесь, что вы используете правильные имена переменных, как, например, $_GET['author_name'], чтобы избежать проблем с отсутствующими данными.

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

Оцените материал
Добавить комментарий

Капча загружается...