WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru WPmentor - Ищем топовых специалистов по WordPress, чтобы помочь вам заработать

ACF поля, правило для родительской рубрики

Как сделать правило в advanced custom fields чтобы при выборе дочерних категорий выводилась форма для заполнения полей

В ACF есть выбор конкретной категории но у меня эти категории (рубрики) постоянно добавляются.

У меня есть родительская категория "ОТЗЫВЫ" в нее входит и постоянно добавляются новые категории "отзывы о васе" "отзывы о пете" и т.д.

мне нужно чтобы когда я хочу добавить "отзывы о васе" выводились поля для заполнения из правила для родительской категории "ОТЗЫВЫ"

Это реально сделать или нет?

С Уважением Дмитрий

0
Гость
14 октября 2016
  • 0
    campusboy3501 www.youtube.com/c/wpplus

    Скорее всего нет, у меня на быструю руку не получилось. Странно, что это он не может. Я бы на вашем месте тогда бы это прикрутил к формату записи, который поддерживает и ACF в том числе.

    Дмитрий 14 Окт. 2016

    не совсем понял как связать формат записи и родительскую категорию ОТЗЫВЫ чтобы поля для заполнения выводились при обращении к дочерней категории ОТЗЫВЫ о васе?

    stepan 14 Окт. 2016

    метабокс, который создается ACF, нужно привязывать к Формату записи
    http://screencloud.net/v/77ol
    Судя по запутанной структуре на сайте - это будет единств рабочим способом для показа метабокса для все Отзывов.

    Дмитрий 14 Окт. 2016

    метабоксы должны показываться для дочерних категорий ОТЗЫВЫ для конкретного пользователя

    campusboy 14 Окт. 2016

    Stepan верно подсказывает. Но, если знаете JS или хотя бы умеете пользоваться jQuery, то можно написать скриптик в несколько строк, который при клики на подпунтках Отзывов будет отображать блок ACF. Сам ACF так и работает ведь. Вам для этого надо в коде лишь посмотреть какие селекторы у нужного блока ACF, посмотреть селекторы у пункта "Отзывы" и мониторить нажатие подпунктов в нем.

    Комментировать
  • 0
    stepan1188 www.weblancer.net/users/stepanko/?affili...

    Как вариант еще: при добавлении отзыва можно отмечать в нем не только дочернюю категорию, но и родительскую "Отзывы". ТО есть, отзыв привязывается к 2 категориям. На функциональности это не сказывается. (может немного код подправить, все зависит от шаблона).
    Один минус: админу сайта при добавления отзыва нужно будет отмечать 2 категории, вместо одной.

    И ясное дело, что вывод блока ACF поставить для рубрики "Отзывы"

    Дмитрий 14 Окт. 2016

    дело в том что дочерние категории постоянно добавляются как только регистрируется новый продавец поэтому вручную их добавлять каждый раз возможности нет, ник продавца это дочерняя категория от родительской категории ОТЗЫВЫ и отзывы должны выводится о конкретном продавце по обращению в его ник категорию отзывов, а в acf если в правилах указать отображение полей для родительской категории ОТЗЫВЫ то они только там и отображаются, а если выбрать дочернюю категорию тобишь ОТЗЫВЫ о конкретном продавце, то поля уже не подтягиваются для заполнения

    stepan 14 Окт. 2016

    Еще главный вопрос: Вы показываете поля ACF для ЗАПИСИ или для Рубрики ?
    Если для рубрики - то в плагине точно нет решений.

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

    display: none;
    Дмитрий 14 Окт. 2016

    метабоксы нужно показывать для дочерней рубрики

    stepan 14 Окт. 2016

    ЛОгику решения написал выше.

    Дмитрий 14 Окт. 2016

    хорошо, допустим у нас выводятся поля метабоксы к родительской категории ОТЗЫВЫ, а как же их связать с дочерней категорией с отзывами о конкретном пользователе?

    Дмитрий 14 Окт. 2016

    чтобы потом была возможность вывести адресованный отзыв о конкретном продавце

    Дмитрий 14 Окт. 2016

    или допустим как связать метабоксы с постами со статусом "Продано" sold - это товары которые были проданы конкретным продавцом

    Дмитрий 14 Окт. 2016

    например при вводе /wordpress/wp-admin/post-new.php?post_cat=otzyvy&post_status=sold , метабоксы не отображаются хотя в правилах был укзан статус записи "Продано"

    stepan 14 Окт. 2016

    Я не понимаю структуру вашего сайта.
    Помочь не смогу - нужно только видеть админку, код наживо.

    /wordpress/wp-admin/post-new.php?post_cat=otzyvy&post_status=sold

    Вы же писали, что метабоксы ДПОЛЖНЫ показываться в РУБРИКАХ, а в примере навели ссылку на запись.

    Дмитрий 14 Окт. 2016

    поскольку в рубриках не получается подвязать метабоксы , появились мысли подвязать отзывы под конкретные записи проданных товаров

    Комментировать
  • 1

    Решил ответить в этой старой теме, так как похожих тем не нашёл даже на других сайтах.
    Вывод метабоксов ACF в дочерных рубриках можно сделать чуть изменив код функции описанной здесь

        // Отображение ACF поля в нужном экране админки
    	add_filter( 'acf/location/rule_match/category_id', 'asp_location_rules_match_category_id', 10, 3);
    	function asp_location_rules_match_category_id($match, $rule, $options) {
    		$screen = get_current_screen();
    
    		// ID текущей категории
    		$term_id = $_GET[ 'tag_ID' ];
    		// проверяем принадлежность категории к дочерной категории
    		$parent_cat = get_term_children( (int)$rule['value'], 'category' );
    		if ( array_search( $term_id, $parent_cat ) !== false )
    			$child_cat = true;
    		else $child_cat = false;
    
    		// если объект не "term" или $screen ID не равно 'edit-category' или не принадлежит дочерной категории установленного правила - то выходим
    		if ( $screen->base !== 'term' || $screen->id !== 'edit-category' || !$child_cat )
    			return $match;
    
    		// изменяем вывод метабокса - не в рубрике с установленным правилом, а в её дочерних рубриках
    		$select_term = $term_id;
    		//$select_term = $rule[ 'value' ];
    
    		if ( $rule[ 'operator' ] === '==')
    			$match = ( $term_id == $select_term );
    		elseif ($rule[ 'operator' ] === '!=')
    			$match = ( $term_id != $select_term );
    
    		return $match;
    	}

    В таком случае вывод метабоксов НЕ будет осуществляться в рубрике с указанными правилами ACF, а только в её подрубриках.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация