Ссылка на категорию товаров в WooCommerce
Я создаю шаблон для страницы archive-product.php в WooCommerce.
Я хочу сделать 3 блока и связать каждый с разной категорией товаров.
Как получить динамическую ссылку для каждой категории товаров в теге <a>
?
Сейчас я использую статические ссылки, но я уверен, что есть способ сделать их динамическими в WordPress
Вот как выглядит мой код:
<ul class="shop-items">
<li class="fine-art">
<a href="http://url.com/product-category/categories/fine-art/">
<div>Изобразительное искусство
<span>Описание</span>
</div>
</a>
</li>
<li class="dance-art">
<a href="http://url.com/product-category/categories/dance-art/">
<div>Танцевальное искусство
<span>Описание</span>
</div>
</a>
</li>
<li class="history-art">
<a href="http://url.com/product-category/categories/history-art/">
<div>Историческое искусство
<span>Описание</span>
</div>
</a>
</li>
</ul>

Для этой цели существует функция get_term_link
(документация).
<a href="<?php echo get_term_link( 42 ,'product_cat') ?>">Fine Art ... etc.</a>
Категория товара - это просто таксономия WordPress, поэтому существует множество функций для работы с ней. В данном случае вам необходимо знать ID вашей категории товара (фактически, ID термина таксономии). При редактировании категории вы найдёте его в URL: .../edit-tags.php?action=edit&taxonomy=product_cat&tag_ID=42&post_type=product

Я пытаюсь сделать то же самое
<?php
class My_Dropdown_Category_Control extends WP_Customize_Control {
public $type = 'dropdown-category';
protected $dropdown_args = false;
protected function render_content() {
?><label><?php
if ( ! empty( $this->label ) ) :
?><span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span><?php
endif;
if ( ! empty( $this->description ) ) :
?><span class="description customize-control-description"><?php echo $this->description; ?></span><?php
endif;
$dropdown_args = wp_parse_args( $this->dropdown_args, array(
'taxonomy' => 'product_cat',
'show_option_none' => ' ',
'selected' => $this->value(),
'show_option_all' => '',
'orderby' => 'name',
'order' => 'ASC',
'show_count' => 1,
'hide_empty' => 1,
'child_of' => 0,
'exclude' => '',
'hierarchical' => 1,
'depth' => 0,
'tab_index' => 0,
'hide_if_empty' => false,
'option_none_value' => 0,
'value_field' => 'term_id',
) );
$dropdown_args['echo'] = false;
$dropdown = wp_dropdown_categories( $dropdown_args );
$dropdown = str_replace( '<select', '<select ' . $this->get_link(), $dropdown );
echo $dropdown;
?></label><?php
}
}
function olsen_light_child_customize_register( WP_Customize_Manager $wp_customize ) {
require_once get_stylesheet_directory() . '/inc/dropdown-category.php';
$wp_customize->add_section( 'homepage', array(
'title' => esc_html_x( 'Test-Link', 'название раздела в кастомайзере', 'olsen-light-child' ),
) );
$wp_customize->add_setting( 'home_slider_category', array(
'default' => 0,
'sanitize_callback' => 'absint',
) );
$wp_customize->add_control( new My_Dropdown_Category_Control( $wp_customize, 'home_slider_category', array(
'section' => 'homepage',
'label' => esc_html__( 'Категория постов для слайдера', 'olsen-light-child' ),
'description' => esc_html__( 'Выберите категорию, из которой слайдер будет показывать посты. Если категория не выбрана, слайдер будет отключен.', 'olsen-light-child' ),
) ) );
}
add_action( 'customize_register', 'olsen_light_child_customize_register' );
но когда я вывожу свои настройки на главной странице, многие элементы моего сайта исчезают... есть идеи, спасибо
<a href="<?php echo get_term_link(get_theme_mod(‘home_slider_category’))?>"><span><?php echo get_theme_mod('gs_slider_one_txt')?></span></a>
