Добрый день! Подскажите, пожалуйста, как реализовать динамическое скрытие части контента в анонсах записей.
У меня на сайте (http://dev.storm-bets.com/) используется плагин Advanced Custom Fields, и есть несколько шаблонов рубрик, на которых необходимо скрыть только часть контента в анонсах записей. В частности, колонку с прогнозом, кратким описанием, и комментарии пользователей -
Необходимо скрыть эти поля только для тех записей, которые входят в отдельные рубрики (либо просто отдельно отмеченных записей), а для остальных - оставить открытыми (планируется продажа прогнозов только на матчи определенных турниров).
Я пробовала реализовать это так:
<?php
global $WAU_User;
$account_ids = array(1);//идентификаторы доступа, которыми закрываем контент
$important = 0; //соответствие доступа //1
if($WAU_User->is_branch_access(1, 10)){
echo '<ul class="list-unstyled"><li class="main-prognos"><?php the_field("prognos"); ?></li><li><span>Коэфф:</span> <?php the_field("koeff"); ?></li></ul>';
}else{
echo 'Получить доступ';
echo wau_get_accounts_box(1);//можем вывести карточку доступа
}
?>
Но, в таком случае, колонка скрывается для абсолютно записей, а не только для скрытых подпиской.
Прошу помочь, подсказать, как мне можно реализовать данную задачу.
Заранее благодарю за уделенное время!
nataliikiyan@gmail.com сказал(а)
Я пробовала реализовать это так
Код который пытались применить вы вообще неверный, он работать не будет.
Проверить доступ текущего пользователя в текущей публикации внутри цикла архивной страницы можно так:
global $WAU_User;
$WAU_Post = new WAU_Post(array(
'post_id' => $post->ID
));
if($WAU_Post->access && $WAU_User->is_branch_access($WAU_Post->get_account_ids())){
//у пользователя есть доступ к публикации
}
Андрей, скажите пожалуйста, Вы можете помочь с настройкой дополнения под мои задачи за доп.плату, либо в рамках поддержки?
В обычных записях контент скрывается, но как скрыть данные произвольных полей в анонсах записей, построенных с ACF? - думаю, что самостоятельно не смогу разобраться.
Мне нужно скрывать содержимое отдельных произвольных полей для записей, построенных с ACF и с отдельным шаблоном записи.В частности мне нужно скрывать содержимое 3-х текстовых полей и комментарии к записям -
В некоторых записях полей, которые нужно скрыть, больше 3-х, это прогнозы сразу на несколько матчей -
Вы можете подсказать, как это можно реализовать?
И еще вопрос, возможно ли установить карточку подписки на страницах архива (вверху над анонсами), чтобы она выводилась только на страницах скрываемых рубрик, а на обычных - была скрыта?
nataliikiyan@gmail.com сказал(а)
мне нужно скрывать содержимое 3-х текстовых полей и комментарии к записям
я вам выше
дал код, который позволяет проверить доступ текущего пользователя к публикации, используйте его, а что то подсказать по скринам не выйдет, для меня это лишь картинки, нужен код, который формирует выводимый контент
Извините, думала так будет быстрее.
Вот у меня есть страница рубрики:
<div id="primary" class="content-area">
<div class="head-bg"></div>
<div class="container">
<main id="main" class="site-main" role="main">
<?php if ( have_posts() ) : ?>
<header class="entry-header">
<?php
the_archive_title( '<h1 class="page-title">', '</h1>' );
the_archive_description( '<div class="taxonomy-description">', '</div>' );
?>
<?php
if ( function_exists('yoast_breadcrumb') ) {
yoast_breadcrumb( '<p id="breadcrumbs">','</p>' );
}
?>
</header>
<?php
while ( have_posts() ) : the_post();
get_template_part( 'template-parts/content-prognos', get_post_format() );
endwhile;
the_posts_pagination( array(
'prev_text' => __( 'Previous page', 'twentysixteen' ),
'next_text' => __( 'Next page', 'twentysixteen' ),
'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentysixteen' ) . ' </span>',
) );
else :
get_template_part( 'template-parts/content-prognos', 'none' );
endif;
?>
</main>
</div>
</div>
И шаблон поста, который используется в цикле:
<?php
/**
* The template part for displaying content
*
* @package WordPress
* @subpackage Twenty_Sixteen
* @since Twenty Sixteen 1.0
*/
?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<div class="article" data-toggle="collapse" data-target="#collapse-<?php the_ID(); ?>">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
<div class="row">
<div class="col-lg-5 col-md-5 col-sm-5 col-xs-5">
<div class="gamer-card">
<div class="gamer-img">
<?php
$image = get_field('logo-1');
if( !empty($image) ): ?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
<?php endif; ?>
</div>
<div class="gamer-name"><?php the_field('gamer-1'); ?></div>
</div>
</div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
<div class="vs"><span>VS</span></div>
</div>
<div class="col-lg-5 col-md-5 col-sm-5 col-xs-5">
<div class="gamer-card">
<div class="gamer-img">
<?php
$image = get_field('logo-2');
if( !empty($image) ): ?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
<?php endif; ?>
</div>
<div class="gamer-name"><?php the_field('gamer-2'); ?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
<div class="match-info">
<ul class="list-unstyled">
<li><span>Дисциплина:</span>
<?php
$categories = get_the_category();
if($categories[0]){
echo '<a href="' . get_category_link($categories[0]->term_id ) . '">'. $categories[0]->name . '</a>';
}
?></li>
<li><span>Турнир:</span>
<?php
foreach((get_the_category()) as $childcat) {
if (cat_is_ancestor_of(7, $childcat)) {
echo '<a href="'.get_category_link($childcat->cat_ID).'" class="cat_link">';
echo $childcat->cat_name . '</a>';
}}
?>
</li>
<li><?php the_field('data-time'); ?></li>
</ul>
</div>
</div>
<div class="col-lg-2 col-md-2 col-sm-12 col-xs-12">
<div class="prognos-info">
<ul class="list-unstyled">
<li class="main-prognos"><?php the_field("prognos"); ?></li>
<li><span>Коэфф:</span> <?php the_field("koeff"); ?></li>
</ul>
</div>
</div>
<div class="col-lg-2 col-md-2 col-sm-12 col-xs-12">
<div class="result">
<?php $format = get_post_format();
if ( current_theme_supports( 'post-formats', $format ) ) {
printf( '<span class="entry-format">%3$s</span>',
sprintf( '<span class="screen-reader-text">%s </span>', _x( 'Used before post format.', 'twentysixteen' ) ),
esc_url( get_post_format_link( $format ) ),
get_post_format_string( $format )
);
}
?>
</div>
</div>
</div>
</div>
<div id="collapse-<?php the_ID(); ?>" class="collapse">
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="analitics">
<p class="small-title">Аналитика</p>
<?php the_field('analitics'); ?>
</div>
<div class="comments" id="comments">
<p class="small-title">Комментарии пользователей:</p>
<ol class="commentlist">
<?php
// Получаем комментарии поста
$comments = get_comments(array(
'post_id' => get_the_ID(),
'status' => 'approve' // комментарии прошедшие модерацию
));
// Формируем вывод списка полученных комментариев
wp_list_comments(array(
'per_page' => 30, // Пагинация комментариев - по 10 на страницу
'reverse_top_level' => true // Показываем последние комментарии в начале
), $comments);
?>
</ol>
<?php comment_form( $args = array(), $post_id = null ) ?>
</div>
</div>
</div>
</div>
<?php $value = get_field('express'); if (($value) == 'yes') : ?>
<div class="article" data-toggle="collapse" data-target="#collapse2-<?php the_ID(); ?>">
<div class="row">
<div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
<div class="row">
<div class="col-lg-5 col-md-5 col-sm-5 col-xs-5">
<div class="gamer-card">
<div class="gamer-img">
<?php
$image = get_field('logo-ex-1');
if( !empty($image) ): ?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
<?php endif; ?>
</div>
<div class="gamer-name"><?php the_field('gamer-ex-1'); ?></div>
</div>
</div>
<div class="col-lg-2 col-md-2 col-sm-2 col-xs-2">
<div class="vs"><span>VS</span></div>
</div>
<div class="col-lg-5 col-md-5 col-sm-5 col-xs-5">
<div class="gamer-card">
<div class="gamer-img">
<?php
$image = get_field('logo-ex-2');
if( !empty($image) ): ?>
<img src="<?php echo $image['url']; ?>" alt="<?php echo $image['alt']; ?>" />
<?php endif; ?>
</div>
<div class="gamer-name"><?php the_field('gamer-ex-2'); ?></div>
</div>
</div>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
<div class="match-info">
<ul class="list-unstyled">
<li><span>Дисциплина:</span>
<?php
$categories = get_the_category();
if($categories[0]){
echo '<a href="' . get_category_link($categories[0]->term_id ) . '">'. $categories[0]->name . '</a>';
}
?></li>
<li><span>Турнир:</span>
<?php
foreach((get_the_category()) as $childcat) {
if (cat_is_ancestor_of(7, $childcat)) {
echo '<a href="'.get_category_link($childcat->cat_ID).'" class="cat_link">';
echo $childcat->cat_name . '</a>';
}}
?>
</li>
<li><?php the_field('data-time-2'); ?></li>
</ul>
</div>
</div>
<div class="col-lg-2 col-md-2 col-sm-12 col-xs-12">
<div class="prognos-info">
<ul class="list-unstyled">
<li class="main-prognos"><?php the_field("prognos-2"); ?></li>
<li><span>Коэфф:</span> <?php the_field("koeff-2"); ?></li>
</ul>
</div>
</div>
<div class="col-lg-2 col-md-2 col-sm-12 col-xs-12">
<div class="result">
<?php $format = get_post_format();
if ( current_theme_supports( 'post-formats', $format ) ) {
printf( '<span class="entry-format">%3$s</span>',
sprintf( '<span class="screen-reader-text">%s </span>', _x( 'Used before post format.', 'twentysixteen' ) ),
esc_url( get_post_format_link( $format ) ),
get_post_format_string( $format )
);
}
?>
</div>
</div>
</div>
</div>
<div id="collapse2-<?php the_ID(); ?>" class="collapse">
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="analitics">
<p class="small-title">Аналитика</p>
<?php the_field('analitics-2'); ?>
</div>
</div>
</div>
</div>
<?php endif; ?>
</article>
Мне нужно скрыть из него блоки:
<div class="prognos-info">
<ul class="list-unstyled">
<li class="main-prognos"><?php the_field("prognos"); ?></li>
<li><span>Коэфф:</span> <?php the_field("koeff"); ?></li>
</ul>
</div>
<div class="analitics">
<p class="small-title">Аналитика</p>
<?php the_field('analitics'); ?>
</div>
В некоторых записях эти 2 блока будут дублироваться, меняться будет только название поля.
И блок комментариев:
<ol class="commentlist"> <?php $comments = get_comments(array( 'post_id' => get_the_ID(), 'status' => 'approve' )); wp_list_comments(array( 'per_page' => 30, 'reverse_top_level' => true ), $comments); ?> </ol> <?php comment_form( $args = array(), $post_id = null ) ?>
Как это можно реализовать?
nataliikiyan@gmail.com сказал(а)
Как это можно реализовать?
Проверяете доступ текущего пользователя к публикации и если доступ есть, то показываете контент, если нет, то не показываете.
Я уже повторяюсь, я дал вам код выше, который и надо применять в вашем случае
Уже 2-й специалист, но не доделав до конца, пропал. Пожалуйста, укажите на ошибку!
Сейчас содержимое отдельных полей скрывается следующим кодом:
<?php
global $WAU_User;
$categories = get_the_category();
//$account_ids = array(1,3);
$account_ids = array();
$access_post = get_post_meta( $post->ID, 'wau-access', false );
//print_r($access_post);
$array_access = json_decode(json_encode($access_post), true);
//print_r($array_access);
if (!empty($array_access)) {
foreach((get_the_category()) as $childcat) {
if (cat_is_ancestor_of(7, $childcat)) {
echo '<a href="'.get_category_link($childcat->cat_ID).'" class="cat_link">Получить доступ</a>';
}
}
} else {
?>
<ul class="list-unstyled">
<li class="small-title"><?php the_field("prognos"); ?></li>
<li><span>Коэфф:</span> <?php the_field("koeff"); ?></li>
</ul>
<?php
}
?>
И аналогично:
<?php
global $WAU_User;
//$account_ids = array(1);
$access_post = get_post_meta( $post->ID, 'wau-access', false );
$array_access = json_decode(json_encode($access_post), true);
//print_r($array_access);
//echo [0]['access'][0];
foreach ($array_access as $name_access ) {
$name_access = $name_access[access];
//print_r($name_access[0]);
$account_ids = $name_access[0];
}
foreach((get_the_category()) as $childcat) {
if (cat_is_ancestor_of(7, $childcat)) {
$cat_child = $childcat->cat_name;
}
}
if (!empty($array_access)) {
?>
<div class="analitics">
<p class="small-title">Прогнозы на все матчи турнира "<?php echo $cat_child; ?>" станут доступны после покупки подписки.</p>
</div>
<?php
echo wau_get_accounts_box($account_ids);
} else {
?>
<!--Выводим текст аналитики только если поле заполнено-->
<?php if( get_field("analitics") ): ?>
<p class="small-title">Аналитика</p>
<?php the_field( "analitics" ); ?>
<?php else :?>
<?php endif; ?>
<?php $value = get_field('ex'); if (($value) == 'yes') : ?>
<div class="comments" id="comments">
<?php if (have_comments()) { ?>
<p class="small-title">Комментарии пользователей:</p>
<?php } else { ?>
<?php } ?>
<ol class="commentlist">
<?php
// Получаем комментарии поста с ID XXX из базы данных
$comments = get_comments(array(
'post_id' => get_the_ID(),
'status' => 'approve' // комментарии прошедшие модерацию
));
// Формируем вывод списка полученных комментариев
wp_list_comments(array(
'per_page' => 30, // Пагинация комментариев - по 10 на страницу
'reverse_top_level' => true // Показываем последние комментарии в начале
), $comments);
?>
</ol>
<p class="small-title">Добавить комментарий</p>
<?php if ( is_user_logged_in() ) {
echo '';
}
else {
echo '<span class="log-info"><a href="#" class="rcl-login">Войдите</a>, чтобы комментировать просто и быстро!</span>';
}
?>
<?php comment_form( $args = array(), $post_id = null ) ?>
</div>
<?php endif; ?>
<?php
}
?>
Этот код верно скрывает нужную часть контента, но не открывает ее для пользователей, для которых доступ открыт.
ну значит специалисты такие) если честно, я такой бессмысленной мешанины давно не видел.
Я же давал выше код, вот его и используем:
<?php
global $WAU_User, $post;
$WAU_Post = new WAU_Post(array(
'post_id' => $post->ID
));
if($WAU_Post->access && $WAU_User->is_branch_access($WAU_Post->get_account_ids())){
foreach((get_the_category()) as $childcat) {
if (cat_is_ancestor_of(7, $childcat)) {
echo '<a href="'.get_category_link($childcat->cat_ID).'" class="cat_link">Получить доступ</a>';
}
}
} else {
?>
<ul class="list-unstyled">
<li class="small-title"><?php the_field("prognos"); ?></li>
<li><span>Коэфф:</span> <?php the_field("koeff"); ?></li>
</ul>
<?php
}
?>и второй блок
<?php
global $WAU_User, $post;
$WAU_Post = new WAU_Post(array(
'post_id' => $post->ID
));
if($WAU_Post->access && $WAU_User->is_branch_access($WAU_Post->get_account_ids())){
?>
<div class="analitics">
<p class="small-title">Прогнозы на все матчи турнира "<?php echo $cat_child; ?>" станут доступны после покупки подписки.</p>
</div>
<?php
echo wau_get_accounts_box($account_ids);
} else {
?>
<!--Выводим текст аналитики только если поле заполнено-->
<?php if( get_field("analitics") ): ?>
<p class="small-title">Аналитика</p>
<?php the_field( "analitics" ); ?>
<?php else :?>
<?php endif; ?>
<?php $value = get_field('ex'); if (($value) == 'yes') : ?>
<div class="comments" id="comments">
<?php if (have_comments()) { ?>
<p class="small-title">Комментарии пользователей:</p>
<?php } else { ?>
<?php } ?>
<ol class="commentlist">
<?php
// Получаем комментарии поста с ID XXX из базы данных
$comments = get_comments(array(
'post_id' => get_the_ID(),
'status' => 'approve' // комментарии прошедшие модерацию
));
// Формируем вывод списка полученных комментариев
wp_list_comments(array(
'per_page' => 30, // Пагинация комментариев - по 10 на страницу
'reverse_top_level' => true // Показываем последние комментарии в начале
), $comments);
?>
</ol>
<p class="small-title">Добавить комментарий</p>
<?php if ( is_user_logged_in() ) {
echo '';
}
else {
echo '<span class="log-info"><a href="#" class="rcl-login">Войдите</a>, чтобы комментировать просто и быстро!</span>';
}
?>
<?php comment_form( $args = array(), $post_id = null ) ?>
</div>
<?php endif; ?>
<?php
}
?>