Ответы пользователя по тегу WordPress
  • Как при смене карточки товара Woocommerce через ajax обновить скрипт отображения вариаций?

    Starck43
    @Starck43 Автор вопроса
    Web разработчик (Python, PHP, SQL + frontend )
    Нашел решение самостоятельно, раз никто о не ответил. Ларчик легко открылся, но не сразу догадался куда нажать ).

    Вообщем надо было перезагрузить скрипты, отвечающие за вывод вариаций с помощью jQuery функции getScript(). В моем случае это скрипты двух плагинов: Woocommerce и Variation Swatches

    return $.ajax({
    			url:  '/wp-admin/admin-ajax.php',
    			data: data,
          cache: true,
    			beforeSend: function(xhr) {
    				$('.content').css('opacity', 0);
    			},
    			complete: function(response) {
    				$.getScript(add_to_cart_js_url); //переменная с URL  скрипта объявлена в functions.php
    				$.getScript(variation_swatches_js_url);  //переменная с URL скрипта объявлена в functions.php
            $('.content').css('opacity', 1);
    			},
    			success: function(data) {
    				$('.content').html(data);
    			},
    		});


    Functions.php:
    <?php
    add_action('wp_footer', function (){
    	?>
    	<script type="text/javascript">
    		var add_to_cart_js_url = '<?=plugins_url("/woocommerce/assets/js/frontend/add-to-cart-variation.min.js");?>';
    		var variation_swatches_js_url = '<?=plugins_url("/variation-swatches-for-woocommerce/assets/js/frontend.js");?>';
    	</script>
    	<?php
    	}
    });
    Ответ написан
    Комментировать
  • Почему в истории браузера при переходе между страницами дублируются состояния?

    Starck43
    @Starck43 Автор вопроса
    Web разработчик (Python, PHP, SQL + frontend )
    Вообщем решения выше подсказали. Поискал и нашел, чт у плагина PREMMERCE WOOCOMMERCE FILTER
    в файле скриптов есть такой кусок кода:
    function ajaxUpdate(link, action) {
    
        var requestData = {'premmerce_filter_ajax_action': action};
        var spin = action === 'reload';
    
        $.ajax({
            'method': 'POST',
            'data': requestData,
            'url': link,
            'dataType': 'json',
            success: function (response) {
                history.pushState({}, null, link);
    
                initScrolls();
                initSliders();
            }
        });


    Отключил ее опцией в настройках "Отложенная загрузка". Так и не понял для чего впихнули разрабы ее.
    Ответ написан
    Комментировать
  • Как проверить содержимое полей ACF и не выводить вкладку (tabs) если пусто?

    Starck43
    @Starck43
    Web разработчик (Python, PHP, SQL + frontend )
    Чтобы дважды не делать запрос к БД лучше передать полученные данные из ACF в переменную 'content' в массиве аргумента $tabs (в примере это $tabs['additional_information']) и выводить в callback функции:

    <?php
    add_filter( 'woocommerce_product_tabs', 'woo_config_product_tabs', 98 );
    function woo_config_product_tabs( $tabs ) {
    
    	if ( $technical_info = get_field('technical_info') ) {
    		$tabs['additional_information'] = array(
    			'title' =>  'Техническая информация',
    			'priority' => 30,
    			'callback' => 'additional_information_tab_content',
    			'content' => $technical_info,
    		);
    	} else unset( $tabs['additional_information'] );
    
    	return $tabs;
    }
    
    function additional_information_tab_content($tab_name, $tab) {
            echo $tab['content'];
    }
    ?>
    Ответ написан
    Комментировать
  • Как вынуть slug name текущего поста в цикле Wordpress?

    Starck43
    @Starck43
    Web разработчик (Python, PHP, SQL + frontend )
    Можно еще проще бнз объявления глобальной переменной $post:

    <?php 
    while( $queryPr->have_posts() ){ $queryPr->the_post();
         echo $queryPr->post->post_name;
    }
    ?>
    Ответ написан
    Комментировать
  • Как добавить к запросу основного цикла вывода записей в woocommerce/archive-product.php мета поля?

    Starck43
    @Starck43 Автор вопроса
    Web разработчик (Python, PHP, SQL + frontend )
    Решение найдено!!! Если кому пригодится, то я нашел хук для переопределения запроса перед выводом категорий:
    add_filter( 'woocommerce_product_subcategories_args', 'update_subcategories_args_func',1 );
    function update_subcategories_args_func($query) {
    
    	if ($_REQUEST['new_product'] == '1') {
    		$args = array(
    			'meta_query' => array(
    				array(
    						  'key' => 'new_product', // name of custom field
    						  'value' => 1,
    						  'type' => 'numeric',
    						 // 'compare' => 'LIKE'
    						)
    			)
    		);
    		return wp_parse_args( $args, $query );
    	} else return $query;
    
    }
    Ответ написан
    Комментировать