Запросить мета автора для всех сообщений на странице архива
Когда пользователь регистрируется на моем сайте Wordress, автоматически создается настраиваемая запись (Athlete), автор которой назначается пользователем. Пользовательский пост по сути действует как страница профиля.
На странице своего профиля пользователи заполняют группу или информацию, и вычисляется и сохраняется как мета пользователя. Если они не заполнят все формы - у них не будет, так как он рассчитывается при отправке.
Я создал настраиваемую страницу архива для сообщений (спортсменов) и использовал Настройки> Чтение> Страница сообщений, чтобы установить его в качестве архива сообщений по умолчанию.
В шаблон предварительного просмотра сообщения (созданный и зацикленный с использованием пользовательских скинов Ele и Elementor) я добавил элемент под названием - как показано на скриншоте ниже.
Я хотел бы скрыть макет предварительного просмотра публикации, если мета автора для этого сообщения отсутствует.
Приведенный ниже код в настоящее время скрывает
Любая помощь будет принята с благодарностью.
function total_score_display(){
if (is_home()){
global $post;
$author_id=$post->post_author;
$total_score = get_the_author_meta('total_score', $author_id);
if(empty($total_score)) : ?>
<style type="text/css">
#total_score_circle {
display: none !important;
}
</style>
<?php endif;
}
}
add_action( 'wp_head', 'total_score_display', 10, 1 );
1 ответ
Благодаря руководству Руви мне удалось решить мою проблему, реализовав шорткод на фактической странице пользовательского скина с помощью Elementor и указанного ниже PHP.
По сути, я создал шорткод, который отображал значение с помощью настраиваемого класса CSS.
.total_score_circle
а затем использовал другой шорткод для запуска оператора if / else.
Если
total_score
существует, вернуться
do_shortcode()
, если не вернуть отдельный несущественный класс CSS.
Я уверен, что это не изящный способ сделать это, но с Elementor получилось неплохо.
// Create shortcode to show total_score
add_shortcode('total_score_sc', 'total_score_sc');
function total_score_sc ($atts) {
$total_score = get_the_author_meta( 'total_score');
$total_score_class = '<div class="total_score_circle" >';
$total_score_class .= $total_score;
$total_score_class .= '</div>';
return $total_score_class;
}
// Create shortcode to replace above shortcode if total_score not present
add_shortcode('final_total_score_sc', 'final_total_score_sc');
function final_total_score_sc() {
global $post;
$author_id = get_post_meta( get_queried_object_id(), 'author_id' );
$total_score = get_the_author_meta( 'total_score', $author_id );
$sR = '<div class="total_score_circle_empty" >';
$sR .= '</div>';
if(empty($total_score))
return $sR;
else
return do_shortcode( '[total_score_sc]' );
}