• Как получить значение полей категории ACF?

    CrewCut
    @CrewCut
    Коплю силы на переезд в тропики
    Нужно указывать в формате 'поле', 'таксономия_IDтаксономии'. Например, have_rows('slide', 'category_9'). Если вывод идет в файле архива или категории, можно так:
    $queried_object = get_queried_object(); 
    get_field('slide', $queried_object)
    Ответ написан
    6 комментариев
  • Как переопределить заголовок title поверх плагинов?

    Kianl
    @Kianl Автор вопроса
    Печальный веб-разработчик
    Короче, как всегда сам решил проблему. Смотрите, че придумал.

    Поскольку title обеспечивается add_theme_support('title-tag'); , то его нужно отключить. Но сделать это нужно в определенный момент - когда WP еще не вписал заголовок title в head, но после того, как становится известна текущая страница (начинают работать функция is_tax() и ей подобные).

    Я немного поковырялся и нашел в документации хронологию событий ВП: https://codex.wordpress.org/Plugin_API/Action_Reference

    Для решения вопроса нужно событие parse_query.

    // Проверяем страницу и удаляем поддержку title-tag
    add_filter('parse_query', 'my_theme_remove_title_tag', 999, 1);
    function my_theme_remove_title_tag() {
    	if(is_post_type_archive() || is_tax()) {
    		remove_theme_support('title-tag');
    	}
    }
    
    // А теперь просто строим нужный нам заголовок и выводим его в <head>
    add_filter('wp_head', 'my_theme_custom_title', 999, 1);
    function my_theme_custom_title(){
    	// Тут что-то делаем с заголовком....
    	if(is_post_type_archive()) {
    		$title = 'Это будет заголовок архива!';
    	}
           
    	// А тут его выводим
    	echo '<title>' . $title . '</title>';
    }

    Таким образом изменяется заголовок только нужных страниц поверх плагинов (по крайней мере поверх All in SEO Pack), а на остальных остается нетронутым. По-моему очень круто получилось!

    Может кому пригодится :)
    Ответ написан
    Комментировать
  • Вернуть в виде массива иерархическую таксономию?

    HectorPrima
    @HectorPrima
    программист
    function get_taxonomy_hierarchy( $taxonomy, $parent = 0 ) {
    	$taxonomy = is_array( $taxonomy ) ? array_shift( $taxonomy ) : $taxonomy;
    	$terms = get_terms( $taxonomy, array( 'parent' => $parent, 'hide_empty' => false ) );
    	$children = array();
    	foreach ( $terms as $term ){
    		$term->children = get_taxonomy_hierarchy( $taxonomy, $term->term_id );
    		$children[ $term->term_id ] = $term;
    	}
    	return $children;
    }
    
    print_r(get_taxonomy_hierarchy('champ',0));
    Ответ написан
    Комментировать
  • Как преобразовать несколько массивов php в один?

    delphinpro
    @delphinpro Куратор тега PHP
    frontend developer
    $input = [
      [2, 'скрипт холодного звонка по продаже услуг'],
      [2, 'продажи в переписке'],
      [2, 'автоматизация отдела продаж'],
      [2, 'заказать скрипт продаж'],
      [3, 'доставка еды из ресторана'],
      [3, 'еда из ресторана на дом'],
      [3, 'доставка еды из ресторана на дом'],
      [4, 'доставка товаров из китая в россию'],
      [4, 'купить в китае с доставкой в россию'],
      [4, 'доставка запчастей из китая в россию'],
    ];
    
    $output = [];
    
    foreach($input as $item) {
      if (!array_key_exists($item[0], $output)) {
        $output[$item[0]] = [];
      }
      $output[$item[0]][] = $item[1];
    }
    
    $output = array_map(fn($item) => join(', ', $item), $output);
    
    var_dump($output);
    Ответ написан
    1 комментарий