WordPress
2
Вклад в тег
$query = new WP_Query( array(
'post_type' => $type, // Ваш тип записи
'posts_per_page' => -1,
'tax_query' => array(
array(
'taxonomy' => $tax, // Такса типа записи
'field' => 'slug',
'terms' => $term // Нужный терм
)
)
) );
$all_tags = [];
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
$cur_terms = get_the_terms( $post->ID, $post_tag ); // $post_tag - нужная таксономия (если это стандартная метка поста, то $post_tag = 'post_tag')
if( is_array( $cur_terms ) ){
foreach( $cur_terms as $cur_term ){
$all_tags[] = $cur_term->term_id;
}
}
}
}
// Возвращаем оригинальные данные поста. Сбрасываем $post.
wp_reset_postdata();
$all_tags = array_unique($all_tags); // Оставляем уникальные значения в массиве
echo '<ul>';
$i = 0;
foreach ( $all_tags as $tag ) {
$class_active = $i === 0 ? ' tab-active' : ''; // для первой кнопки ставим активный класс
$tag_name = get_term( intval( $tag ) )->name; // Наименование метки
echo '<li class="tab-caption' . $class_active . '">' . $tag_name . '</li>';
$i++;
}
echo '</ul>';
echo '<div>';
$k = 0;
foreach ( $all_tags as $tag ) {
$class_active = $k === 0 ? ' tab-active' : '';
echo '<div class="tab-content' . $class_active . '">';
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
if ( has_term( intval( $tag ), $post_tag ) ) { // Выводим только те посты, в которых есть текущая метка в цикле
the_content(); // Здесь вывод данных поста. Как вариант - get_template_part( 'path/to/template' );
}
}
}
// Возвращаем оригинальные данные поста. Сбрасываем $post.
wp_reset_postdata();
echo '</div>';
$k++;
}
echo '</div>';
add_filter( 'woocommerce_checkout_fields', 'hide_local_pickup_method', 999 );
function hide_local_pickup_method( $fields_pickup ) {
$shipping_method_pickup = 'local_pickup:2'; // это значение поля самовывоза необходимо уточнить через исходный код в браузере
// для полей из группы 'billing'
// в следующей строке в массив внести идентификаторы полей, валидацию которых нужно отключить
$hide_billing_fields_pickup = array( 'billing_city', 'billing_state', 'billing_address_1', 'billing_address_2', 'billing_address_3', 'billing_porch', 'billing_floor' );
$chosen_methods_pickup = WC()->session->get( 'chosen_shipping_methods' );
$chosen_shipping_pickup = $chosen_methods_pickup[0];
foreach( $hide_billing_fields_pickup as $field_pickup ) {
if ( $chosen_shipping_pickup == $shipping_method_pickup ) {
$fields_pickup['billing'][$field_pickup]['required'] = false;
$fields_pickup['billing'][$field_pickup]['class'][] = 'hide_pickup';
}
$fields_pickup['billing'][$field_pickup]['class'][] = 'conditional-visibility-field';
}
// для полей из группы 'shipping'
// в следующей строке в массив внести идентификаторы полей, валидацию которых нужно отключить
$hide_shipping_fields_pickup = array( 'shipping_city', 'shipping_state', 'shipping_address_1', 'shipping_address_2', 'shipping_address_3', 'shipping_porch', 'shipping_floor' );
foreach( $hide_shipping_fields_pickup as $field_pickup ) {
if ( $chosen_shipping_pickup == $shipping_method_pickup ) {
$fields_pickup['shipping'][$field_pickup]['required'] = false;
$fields_pickup['shipping'][$field_pickup]['class'][] = 'hide_pickup';
}
$fields_pickup['shipping'][$field_pickup]['class'][] = 'conditional-visibility-field';
}
// для полей из группы 'order'
// в следующей строке в массив внести идентификаторы полей, валидацию которых нужно отключить
$hide_order_fields_pickup = array( 'additional_time_from', 'additional_time_to', 'additional_date' );
foreach( $hide_order_fields_pickup as $field_pickup ) {
if ( $chosen_shipping_pickup == $shipping_method_pickup ) {
$fields_pickup['order'][$field_pickup]['required'] = false;
$fields_pickup['order'][$field_pickup]['class'][] = 'hide_pickup';
}
$fields_pickup['order'][$field_pickup]['class'][] = 'conditional-visibility-field';
}
return $fields_pickup;
}
add_action( 'wp_footer', 'local_pickup_fields', 999 );
function local_pickup_fields() {
if ( is_checkout() ) {
?>
<style>
.hide_pickup {display: none!important;}
</style>
<script>
jQuery( function( $ ) {
if ( typeof woocommerce_params === 'undefined' ) {
return false;
}
$(document).on( 'change', '#shipping_method input[type="radio"]', function() {
// local_pickup:2 - это значение поля самовывоза необходимо уточнить через исходный код в браузере
$('.conditional-visibility-field').toggleClass('hide_pickup', this.value == 'local_pickup:2');
});
});
</script>
<?php
}
}
if ( ! is_admin() && ( ! defined( 'DOING_AJAX' ) || ( defined( 'DOING_AJAX' ) && ! DOING_AJAX ) ) ) {
ob_start( 'html5_slash_fixer' );
$len = ob_get_length();
if ( $len && $len > 0 ) {
add_action( 'shutdown', 'html5_slash_fixer_flush' );
}
}
function html5_slash_fixer( $buffer ) {
return str_replace( ' />', '>', $buffer );
}
function html5_slash_fixer_flush() {
ob_end_flush();
}