Добрый день! Подскажите, пожалуйста, как реализовать динамическое скрытие части контента в анонсах записей.
У меня на сайте (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 } ?>