Вопрос или проблема
У меня есть код, который я использую для создания кастомного 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(); ?>
Объяснение исправлений:
-
Получение имени пользователя и его биографии: Вместо
get_the_author_meta()
, используйте$curauth->nickname
для имени пользователя и$curauth->description
для биографии. Это обеспечит доступ к правильным данным текущего автора. -
Очистка вывода: Используйте функции
esc_html()
иesc_url()
, чтобы защитить вывод от XSS-угроз и ошибок форматирования. -
Проверка корректности переменных: Убедитесь, что вы используете правильные имена переменных, как, например,
$_GET['author_name']
, чтобы избежать проблем с отсутствующими данными.
Если после внесения этих и других необходимых изменений проблема все еще не решена, возможно, следует проверить, не конфликтуют ли какие-либо плагины или темы с вашим кодом.