Задать вопрос
  • Как формируется прайс?

    @zeaovede Автор вопроса
    Василий Банников, разобрался. Это значит в первом варианте + 20%, во втором варианте +24%. А изначально 100 умножал на 120%. Поэтому ничего и не сводилось
  • Как формируется прайс?

    @zeaovede Автор вопроса
    1.2 это значит 22%?
  • Contact Form 7 - Как убрать svg из футера?

    @zeaovede Автор вопроса
    Артем Золин, чисто с эстетической стороны мне пофиг. На сколько сильно эта хрень может замедлять загрузку сайта?
  • Почему при переподключении jquery может отвалиться myajax?

    @zeaovede Автор вопроса
    Артем Золин, я это методом личного наблюдения так сказать нащупал. Вся проблема была в том, что скрипты отказываются работать с вордпрессовским jQuery, так как он подключается из header, не знаю почему так, но для обеспечения их работы важно, чтобы jQuery был подключен из того же места, где подключены скрипты, т. е. из футера. И когда я указывал свой jQuery я задавал ему свой id, а в myajax при этом использовался вордпрессовский, который и нужно было изменить на свой, чтобы обеспечить работу. А если прямо вообще упороться и ответить на мой вопрос из темы, то раньше работало, потому как jQuery подключался не из функции, т. е. мимо вордпресса, а myajax от вордпрессовского jQuery. Сейчас я удалил jquery от wordpress и для внешнего jqury задал id отличающийся от wp, который применяю теперь для необходимых скриптов. Большая часть функционала на фронте, что позволяет пока что безболезненно переносить jquery в футер. Я не понимаю, почему скрипты на сайте требуют обязательного присутствия jquery в футере до сих пор
  • Как переподключить jquery и не поломать сайт?

    @zeaovede Автор вопроса
    Переместив jquery в footer заработали скрипты и myajax
  • Как переподключить jquery и не поломать сайт?

    @zeaovede Автор вопроса
    Артем Золин, ага, вижу. В общем, если подключаю свой jquery то myajax не подключается, если отключаю свой jquery, то myajax подключается. Но как я и говорил ранее, если не подключать свой jquery, то весь функционал калькулятора не работает. Как итог, подключаю jquery - плохо. Отключаю jquery - плохо. Возможно ли как-то для скриптов калькулятора подключить новый jquery, а для для myajax оставить вордпрессовский
  • Как переподключить jquery и не поломать сайт?

    @zeaovede Автор вопроса
    Артем Золин, если я не подключу свой скрипт jQuery то мои калькуляторы не работают. ajax-events.min.js вот тут что-то я совсем не понял. Этот скрипт в качестве примера привели? В общем я протестировал ваше решение в том виде в котором вы его представили. Myajax он отвечает за отображение результата применения поля промокод в калькуляторах на фронтенде

    В общем возможно это внесет ясности, вот результат с подключением скриптов, когда Myajax работает
    ?>	
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/jquery-3.6.0.min.js"></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="https://widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js" async></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/bootstrap-select.min.js@1"></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript">$('.selectpicker').selectpicker();</script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/bootstrap.bundle.min.js"></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/popper.min.js"></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/bootstrap.min.js"></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/jquery.smoothscroll.min.js"></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/slick.min.js"></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/nouislider.min.js"></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/jquery-editable-select.js"></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/wow.min.js"></script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/custom.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js" integrity="sha512-nOQuvD9nKirvxDdvQ9OMqe2dgapbPB7vYAMrzJihw5m+aNcf0dX53m6YxM4LgA9u8e9eg9QX+/+mPu8kCNpV2A==" crossorigin="anonymous" type="2ef1d8b03fb0311f9e134e45-text/javascript"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/aes.min.js" integrity="sha512-eqbQu9UN8zs1GXYopZmnTFFtJxpZ03FHaBMoU3dwoKirgGRss9diYqVpecUgtqW2YRFkIVgkycGQV852cD46+w==" crossorigin="anonymous" type="2ef1d8b03fb0311f9e134e45-text/javascript"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/pad-zeropadding.min.js" integrity="sha512-txZjFJoDvbM8FJj9HuAHasxA/M76UjnMCXLHwuciIGDKUW9EB9PJVA6foG0vymuK9hu2gdpL60imO9VrTlEF7w==" crossorigin="anonymous" type="2ef1d8b03fb0311f9e134e45-text/javascript"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/enc-hex.min.js" integrity="sha512-jDU0YCduSP8z0cvjfPFm7/zN/viOcmNWlq0GUIcjVhuv4WoKcMppghamg4aeuBtJaA0wjtYfxwQjPpVuYGEsBA==" crossorigin="anonymous" type="2ef1d8b03fb0311f9e134e45-text/javascript"></script>
    
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript">
        const boost_type = 'division_solo';
        </script>
    <script type="2ef1d8b03fb0311f9e134e45-text/javascript" src="<?php echo get_template_directory_uri(); ?>/js/boost-script.js@5.1"></script>
    <script src="<?php echo get_template_directory_uri(); ?>/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="2ef1d8b03fb0311f9e134e45-|49" defer=""></script><script type="text/javascript">(function(){window['__CF$cv$params']={r:'69862a0fac5f1622',m:'w9.g166I8d9OaMXdNt5eapuW_kWXA4fj5BzjjGER3VI-1633264044-0-AetPrTFxHWceaDFHbJNVyj4Fju34Nc9CgaV26SK+4GXJo8lz+Sq1OML2ej+rW9k9J20ODwDQBwMco8b8bXTrYYKbh/WHeMI49GeUkOggNze8URrI/n42iGkYsW+q4kWKLQ==',s:[0x81198b249d,0x2c72b21e3a],}})();</script>
    	<?php


    А вот уже с переподключением скриптов, когда калькуляторы работают, но Myajax не работает
    wp_deregister_script( 'jquery' );
    	wp_register_script( 'jquery', get_template_directory_uri() .'/js/jquery-3.6.0.min.js' );
    	wp_enqueue_script( 'jquery' );
    	wp_enqueue_script( 'trustpilot-script', 'https://widget.trustpilot.com/bootstrap/v5/tp.widget.bootstrap.min.js', array(), null, true ); 
    	wp_enqueue_script( 'select-script', get_template_directory_uri() .'/js/bootstrap-select.min.js@1', array(), 'null', true );
    	wp_add_inline_script( 'select-script', '$(\'.selectpicker\').selectpicker();' );
    	wp_enqueue_script( 'bundle-script', get_template_directory_uri() .'/js/bootstrap.bundle.min.js', array(), 'null', true );
    	wp_enqueue_script( 'popper-script', get_template_directory_uri() .'/js/popper.min.js', array(), null, true );
    	wp_enqueue_script( 'bootstrap-script', get_template_directory_uri() .'/js/bootstrap.min.js', array(), null, true );
    	wp_enqueue_script( 'smoothscroll-script', get_template_directory_uri() .'/js/jquery.smoothscroll.min.js', array('jquery'), null, true );
    	wp_enqueue_script( 'slick-script', get_template_directory_uri() .'/js/slick.min.js', array(), null, true );
    	wp_enqueue_script( 'nouislider-script', get_template_directory_uri() .'/js/nouislider.min.js', array(), null, true );
    	wp_enqueue_script( 'editable-script', get_template_directory_uri() .'/js/jquery-editable-select.js', array('jquery'), null, true );
    	wp_enqueue_script( 'wow-script', get_template_directory_uri() .'/js/wow.min.js', array(), null, true );
    	wp_enqueue_script( 'custom-script', get_template_directory_uri() .'/js/custom.js', array(), null, true );
        wp_enqueue_script( 'crypto-script', 'https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js', array(), null, true ); 
        wp_enqueue_script( 'aes-script', 'https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/aes.min.js', array(), null, true ); 
        wp_enqueue_script( 'pad-script', 'https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/pad-zeropadding.min.js', array(), null, true ); 
        wp_enqueue_script( 'enc-script', 'https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/enc-hex.min.js', array(), null, true ); 
        wp_enqueue_script( 'solo-script', get_template_directory_uri() .'/js/other/solo.js', array(), null, true );
        wp_enqueue_script( 'boost-script', get_template_directory_uri() .'/js/boost-script.js@5.1', array(), null, true );
        wp_enqueue_script( 'rocket-script', get_template_directory_uri() .'/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js', array(), null, true );


    И вот какая-то еще ошибка в другом скрипте появляется связанная с myajax
    620b9f885e4cb578802419.png
  • Кто и как подключает скрипты и стили на своем wordpress?

    @zeaovede Автор вопроса
    На wp kama сегодня утром еще нашел ответ
    620a42bd5de70507980277.png
    Но в любом случае спасибо за ответ, это действительно то, что мне было нужно. И глядя на ваш ответ, я обратил внимание, что в примере вы подключаете скрипты и стили одной функцией. На моем сайте для каждой новой страницы или группы страниц используется новая функция. Я так понимаю теперь, что необязательно плодить множество add_action и функций к ним, а все манипуляции можно производить в пределах одного?
  • Кто и как подключает скрипты и стили на своем wordpress?

    @zeaovede Автор вопроса
    Антон Литвиненко, тут просто смотрите, у меня главная страница, она достаточно легкая. Потом страницы калькуляторов, довольно тяжелые. Если мне подключать стили для всех, то это будет означать , что дополнительные скрипты и стили(которые только для калькуляторов) будут подключаться в head и footer главной страницы. На сколько это критично вообще? К примеру, если будет подключен стиль или скрипт, который не взаимодействует со страницей никак, но при этом будет выводиться в коде страницы.
  • Кто и как подключает скрипты и стили на своем wordpress?

    @zeaovede Автор вопроса
    Антон Литвиненко, Хорошо. Какую тактику лучше избрать? В гугле можно найти как подключить тот или иной несчастный скрипт или стиль, но про тактику там ни слова
  • Как отключить поля оформления заказа woocommerce?

    @zeaovede Автор вопроса
    Максим, Спасибо Максим. Да, это действительно работает. Однако, мне пришлось действовать практически вслепую, задействовав интуицию на максимум. Я перешел по ссылке.
    Там вот этот код:
    add_action( 'woocommerce_email_order_meta', 'misha_add_email_order_meta', 10, 3 );
    /*
     * @param $order_obj Order Object
     * @param $sent_to_admin If this email is for administrator or for a customer
     * @param $plain_text HTML or Plain text (can be configured in WooCommerce > Settings > Emails)
     */
    function misha_add_email_order_meta( $order_obj, $sent_to_admin, $plain_text ){
    
    	// this order meta checks if order is marked as a gift
    	$is_gift = get_post_meta( $order_obj->get_order_number(), 'is_gift', true );
    	
    	// we won't display anything if it is not a gift
    	if( empty( $is_gift ) )
    		return;
    	
    	// ok, if it is the gift order, get all the other fields
    	$gift_wrap = get_post_meta( $order_obj->get_order_number(), 'gift_wrap', true );
    	$gift_recipient = get_post_meta( $order_obj->get_order_number(), 'gift_name', true );
    	$gift_message = get_post_meta( $order_obj->get_order_number(), 'gift_message', true );
    	
    	
    	// ok, we will add the separate version for plaintext emails
    	if ( $plain_text === false ) {
    	
    		// you shouldn't have to worry about inline styles, WooCommerce adds them itself depending on the theme you use
    		echo '<h2>Gift Information</h2>
    		<ul>
    		<li><strong>Is gift?</strong> Yes</li>
    		<li><strong>Gift Wrap:</strong> ' . $gift_wrap . '</li>
    		<li><strong>Recipient name:</strong> ' . $gift_recipient . '</li>
    		<li><strong>Gift message:</strong> ' . wpautop( $gift_message ) . '</li>
    		</ul>';
    	
    	} else {
    	
    		echo "GIFT INFORMATION\n
    		Is gift: Yes
    		Gift Wrap: $gift_wrap
    		Recipient name: $gift_recipient
    		Gift message: $gift_message";	
    	
    	}
    	
    }


    Из этого кода убрал сразу
    // this order meta checks if order is marked as a gift
    	$is_gift = get_post_meta( $order_obj->get_order_number(), 'is_gift', true );
    	
    	// we won't display anything if it is not a gift
    	if( empty( $is_gift ) )
    		return;

    Т.к. он мне показался бесполезным.
    Дальше обратил внимание на этот кусок кода
    $gift_wrap = get_post_meta( $order_obj->get_order_number(), 'gift_wrap', true );

    И заменил на свое, получилось вот так
    $lp_field = get_post_meta( $order_obj->get_order_number(), 'billing_lp', true );

    И так далее, произвел замену по аналогии в других местах.
    Но я так и не понял, как быть, если это не кастомные поля, а те самые, которые предлагает сам woocommerce? Откуда брать вот это "$gift_wrap".
  • Как отключить поля оформления заказа woocommerce?

    @zeaovede Автор вопроса
    Максим, Все верно Максим. Вписал их, как в той статье было указано которой вы поделились:
    //* Do NOT include the opening php tag shown above. Copy the code shown below.
    
    //* Add select field to the checkout page
    add_action('woocommerce_before_order_notes', 'wps_add_select_checkout_field');
    function wps_add_select_checkout_field( $checkout ) {
    
    	echo '<h2>'.__('Next Day Delivery').'</h2>';
    
    	woocommerce_form_field( 'daypart', array(
    	    'type'          => 'select',
    	    'class'         => array( 'wps-drop' ),
    	    'label'         => __( 'Delivery options' ),
    	    'options'       => array(
    	    	'blank'		=> __( 'Select a day part', 'wps' ),
    	        'morning'	=> __( 'In the morning', 'wps' ),
    	        'afternoon'	=> __( 'In the afternoon', 'wps' ),
    	        'evening' 	=> __( 'In the evening', 'wps' )
    	    )
     ),
    
    	$checkout->get_value( 'daypart' ));
    
    }


    Пока что не выходит у меня

    unset($fields['shipping']['shipping_first_name']);

    Вместо "shipping_first_name" вывожу daypart, а вместо "shipping"?
  • Как отключить поля оформления заказа woocommerce?

    @zeaovede Автор вопроса
    Максим, кастомные поля этим методом можно отключать?
  • Как передать опции в шаблон письма на woo?

    @zeaovede Автор вопроса
    Максим, Спасибо, работает.
    В этой теме задал вам вопрос
    https://qna.habr.com/q/1095098?e=12151460#comment_...
  • Как отключить поля оформления заказа woocommerce?

    @zeaovede Автор вопроса
    Максим, Проверил. 1 сет работает, 2 и 3 сет не работает
  • Как отключить поля оформления заказа woocommerce?

    @zeaovede Автор вопроса
    Максим, Проверил. Работает только для первого сета. Т.е. чтобы я там не вывел, работать будет первый сет, а 2 и 3 сет не работает
  • Как отключить поля оформления заказа woocommerce?

    @zeaovede Автор вопроса
    Максим, Код рабочий. Заключительный вопрос по оформлению кода остался

    Имеется поле 1, которое нужно исключить для товаров ID которых 1,2
    Имеется поле 2, которое нужно исключить для товаров ID которых 3,4
    Исключаю поле 1 для указанных товаров. Все четко.
    Исключаю поле 2 для перечисленных товаров.
    Получается вот так
    $product_ids = array( 1, 2, 3, 4 );

    Перехожу на страницу товаров 1 и 2. Поле 2 не наблюдается.
    Перехожу на страницу товаров 3 и 4. Поле 1 не наблюдается.

    Что я решил сделать для того чтобы поле 1 отображалось для товаров 3 и 4, а поле 2 для товаров 1 и 2:

    add_filter( 'woocommerce_checkout_fields', 'conditionally_remove_checkout_fields_1', 25, 1 );
    function conditionally_remove_checkout_fields( $fields ) {
    //перечень ID товаров для которых отключаем поля

    $product_ids = array( 1,2 );

    ...
    Вывожу поле 1
    ...

    add_filter( 'woocommerce_checkout_fields', 'conditionally_remove_checkout_fields_2', 25, 1 );
    function conditionally_remove_checkout_fields( $fields ) {
    //перечень ID товаров для которых отключаем поля

    $product_ids = array( 3,4 );

    ...
    Вывожу поле 2
    ...

    Пришел к такому решению, но возможно, как-то проще можно оформить?
  • Как отключить поля оформления заказа woocommerce?

    @zeaovede Автор вопроса
    Максим, Спасибо. Сегодня - завтра проверю и отпишусь