Я пытаюсь создать выпадающий шорткод для категорий WordPress и тегов таксономий.Может показаться, что параметры появляются, но после выбора ничего не происходит.
Мне удалось изменить фрагмент кода, который я использую для фильтра тегов WooCommerce, для части решения.
Исходный фрагмент рабочего кода ==>
add_shortcode( 'product_tax_dropdown', 'wc_product_taxonomy_dropdown' );
function wc_product_taxonomy_dropdown( $atts ) {
// Attributes
$atts = shortcode_atts( array(
'hide_empty' => '1', // or '0'
'show_count' => '0', // or '0'
'orderby' => 'name', // or 'order'
'taxonomy' => 'product_tag',
), $atts, 'product_tax_dropdown' );
global $wp_query;
$taxonomy = $atts['taxonomy'];
$taxonomy_name = get_taxonomy( $taxonomy )->labels->singular_name;
ob_start();
wp_dropdown_categories( array(
'hide_empty' => $atts['hide_empty'],
'show_count' => $atts['show_count'],
'orderby' => $atts['orderby'],
'selected' => isset( $wp_query->query_vars[$taxonomy] ) ? $wp_query->query_vars[$taxonomy] : '',
'show_option_none' => sprintf( __( 'Select a %s', 'woocommerce' ), $taxonomy_name ),
'option_none_value' => '',
'value_field' => 'slug',
'taxonomy' => $taxonomy,
'name' => $taxonomy,
'class' => 'dropdown_'.$taxonomy,
) );
?>
<script type='text/javascript'>
jQuery(function($){
var select = '.dropdown_product_tag',
taxonomy = '<?php echo $taxonomy; ?>';
function onProductTaxChange() {
if ( $(select).val() !=='' ) {
location.href = '<?php echo esc_url( home_url() ); ?>/?'+taxonomy+'='+$(select).val();
}
}
$(select).change( onProductTaxChange );
});
</script>
<?php
return ob_get_clean();
}
Измененный фрагмент сломанного кода ==>
add_shortcode( 'tax_dropdown', 'taxonomy_dropdown' );
function taxonomy_dropdown( $atts ) {
// Attributes
$atts = shortcode_atts( array(
'hide_empty' => '1', // or '0'
'show_count' => '0', // or '0'
'orderby' => 'name', // or 'order'
'taxonomy' => 'post_tag',
), $atts, 'tax_dropdown' );
global $wp_query;
$taxonomy = $atts['taxonomy'];
$taxonomy_name = get_taxonomy( $taxonomy )->labels->singular_name;
ob_start();
wp_dropdown_categories( array(
'hide_empty' => $atts['hide_empty'],
'show_count' => $atts['show_count'],
'orderby' => $atts['orderby'],
'selected' => isset( $wp_query->query_vars[$taxonomy] ) ? $wp_query->query_vars[$taxonomy] : '',
'show_option_none' => sprintf( __( 'Select a %s', 'post' ), $taxonomy_name ),
'option_none_value' => '',
'value_field' => 'slug',
'taxonomy' => $taxonomy,
'name' => $taxonomy,
'class' => 'dropdown_'.$taxonomy,
) );
?>
<script type='text/javascript'>
jQuery(function($){
var select = '.dropdown_tag',
taxonomy = '<?php echo $taxonomy; ?>';
function onTaxChange() {
if ( $(select).val() !=='' ) {
location.href = '<?php echo esc_url( home_url() ); ?>/?'+taxonomy+'='+$(select).val();
}
}
$(select).change( onTaxChange );
});
</script>
<?php
return ob_get_clean();
}
Таксономии отображаются в раскрывающемся меню, но при их выборе ничего не происходит.
После выбора таксономии пользователь должен быть направлен на выбранную страницу архива:
Пример категории: http://www.website.com/category/seleted-category Пример тега: http://www.website.com/tag/selected-tag