• Как автоматически измененить статус заказа в Woocommerce?

    NowebNolife
    @NowebNolife Автор вопроса
    Slowpoke App Developer
    UPD:

    Решил данную проблему, добавив данную функцию в functions.php

    add_action( 'woocommerce_thankyou', 'custom_woocommerce_auto_complete_order' );
        function custom_woocommerce_auto_complete_order( $order_id ) { 
            if ( ! $order_id ) {
                return;
            }
            $order = wc_get_order( $order_id );
            if( $order->has_status( 'processing' ) ) {
                $order->update_status( 'completed' );
            }
        }
    Ответ написан
    9 комментариев
  • Woocommerce Как поменять текст кнопки added_to_cart?

    @NickToot
    web developer
    За более чем 3 года так никто и не ответил, как-то печально.. Столкнулся с такой же задачей, долго искал, как оказалось эта кнопка вставляется из js файла, а там подставляется переменная с переводом, нашел в интернете пример, как с помощью фильтра можно переопределить этот перевод:
    /**
     * Изменение текста на кнопке "Перейти в корзину"
     */
    add_filter( 'woocommerce_get_script_data', 'change_view_cart', 10, 2 );
    function change_view_cart( $params, $handle ) {
      if ( $handle == 'wc-add-to-cart' ) {
        $params['i18n_view_cart'] = "Оформить заказ";
      }
    	
      return $params;
    }
    Ответ написан
    1 комментарий
  • Как убрать учет стоимости доставки в общей сумме в корзине Woocommerce?

    @melann Автор вопроса
    Ответ нашел. Если кому-то пригодится, ловите:

    function disable_shipping_calc_on_cart( $show_shipping ) {
        if( is_cart() ) {
            return false;
        }
        return $show_shipping;
    }
    add_filter( 'woocommerce_cart_ready_to_calc_shipping', 'disable_shipping_calc_on_cart', 99 );
    Ответ написан
    Комментировать
  • Как в WordPress вывести изображение?

    wppanda5
    @wppanda5 Куратор тега WordPress
    WordPress Mедведь
    Не ужели это так сложно?
    Идем в гугл, забиваем wp_get_attachment_image_src
    переходим по первой же ссылке в кодекс
    жмем в меню на Examples ->Default Usage
    получаем
    <?php 
    $attachment_id = 8; // attachment ID
    
    $image_attributes = wp_get_attachment_image_src( $attachment_id ); // returns an array
    if( $image_attributes ) {
    ?> 
    <img src="<?php echo $image_attributes[0]; ?>" width="<?php echo $image_attributes[1]; ?>" height="<?php echo $image_attributes[2]; ?>">
    <?php } ?>


    поиск занимает меньше времени, чем написать вопрос
    Ответ написан
    1 комментарий
  • Верстка и php обработчик на разных серверах, можно ли?

    Vadiok
    @Vadiok
    Веб разработчик
    Не знаю, зачем понадобилось использовать socket_create().
    Мне кажется, что проблема в CORS - браузер в целях безопасности запрещает JavaScript использовать данные ответа сервера, находящегося на другом домене.
    Если это так, то для исправления требуется добавить в начало one-page.azurewebsites.net/action.php:
    <?php
    header("Access-Control-Allow-Origin: http://домен.лендинга");
    Ответ написан
    3 комментария
  • Как передать значение переменной между файлами шаблона на wordpress?

    kasheibess
    @kasheibess
    веб уже не тот
    Для любителей лаконичности и Yii style.
    Определяем функцию
    if (!function_exists('render_partial')) {
        function render_partial($template, $render_data)
        {
            extract($render_data);
            require locate_template($template);
        }
    }


    Использовать вот так (например):
    render_partial('partials/simple-part.php', [
        'param' => 'Просто строка'
    ]);


    В simple-part.php будет доступна переменная $param. И ничего запоминать не придется.
    Ответ написан
    1 комментарий
  • Как передать значение переменной между файлами шаблона на wordpress?

    HeadOnFire
    @HeadOnFire
    PHP, Laravel & WordPress Evangelist
    UPDATE 2020:

    Для будущих поколений: начиная с версии WordPress 5.5.0 функция get_template_part() поддерживает третий параметр array $args. Подробнее в официальном посте.

    Оригинальный ответ:

    +1 к ответу, Капитан Какао. Впрочем, я использую все-таки стандартный get_template_part() для удобства, а переменные передаю через другое API - query_vars:
    // В файле из которого вызываем
    set_query_var( 'my_var', $my_var );
    get_template_part( 'content', 'part' );
    
    // В вызванном файле
    echo $my_var;

    Почему так? Для очевидности, в этом случае ты наглядно понимаешь что передаешь в темплейт.
    Ответ написан
    2 комментария
  • Как сделать плавную прокрутку страницы до якоря?

    BedwaRe
    @BedwaRe
    Пиши код
    $("body").on('click', '[href*="#"]', function(e){
    	var fixed_offset = 100;
    	$('html,body').stop().animate({ scrollTop: $(this.hash).offset().top - fixed_offset }, 1000);
    	e.preventDefault();
    });

    Во-первых, асинхронно (например, у меня отзывы подгружались с другого сервиса, с задержкой несколько секунд). Во-вторых, для всех ссылок, которые содержат символ # (являются якорями). В-третьих, у меня в проекте было фиксированное меню сверху, поэтому при прокрутке прямо по якорю часть контента перекрывалась, для решения этой проблемы предлагаю установить fixed_offset равный высоте фиксированного меню (опционально).
    Ответ написан
    8 комментариев
  • Как правильно вывести товары определенной категории Woocommerce?

    @i_sova
    Wordpress Developer
    $args = array(
            'posts_per_page'=> 7,
            'post_type' => 'product',
            'post_status'   => 'publish',
            tax_query' => array(
        array(
            'taxonomy' => 'product_cat',
             'field' => 'slug',
            'terms' => 'тут слаг категории', 
        )
    ),
            ); 
            $the_query = new WP_Query( $args );
    Ответ написан
    Комментировать
  • Почему не работает javascript после ajax получения ответа?

    antonio1107
    @antonio1107
    Заместитель руководителя
    Решено! JQuery обработчики, такие как hover(), click(), bind(), on() и т.д. обрабатывают элементы только при загрузке.
    Чтобы они реагировали на подгруженный ajax'ом контент, есть несколько решений:
    1. Загрузить ajax'ом скрипт заново(не лучший вариант). Но работает.
    2. Использовать обработчик live(). Но с версии >= JQuery 1.9 его убрали и перенесли в обработчик on(), в котором объединили и bind(), и delegate().
    3. На мой взгляд, самый лучший. Для тега установить атрибут onClick, установить ему значение функции, например:
      а в скрипте переделать обработчики в функцию.
      Вместо:
      $("div").click(function(){
      //что-то делает
      });
      
      //переделать на:
      function function_name(){
      //что-то делает
      }

      Т.е. у тэга div при нажатии атрибут onClick вызывает эту функции. И тут без разницы, подгружен контент ajax'ом или нет.
      Если хотите в функции использовать значение $(this), то задайте в атрибуте у функции onClick="function_name(this);", а в скрипте в функции задайте событие для этого значения
      function function_name(i){
      $(i).вешаем обработчики
      //$(i) это тоже, что и $(this) у обработчика $("div").click()
      }



    Надеюсь, кому-то будет полезно :)
    Ответ написан
    3 комментария
  • Что означает (jQuery) после (function( $ )?

    @bm1
    Скобки которые идут сразу после функции означают немедленный вызов функции и в качестве аргумента ей передаётся объект jQuery, можно это представить так
    function myFunc( $ ) {
      $.fn.myPlugin = function() {
          // Код плагина
      };
    }
    
    myFunc(jQuery); // Вызываем функцию и передаём ей jQuery, теперь внутри функции мы можем спокойно обращаться к '$' и не бояться, что кто-то его переопределил
    Ответ написан
    Комментировать
  • Что означает (jQuery) после (function( $ )?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    (function( ) {
    })();

    Вот эта конструкция называется "анонимная самовызываемая функция".

    То есть, тут два действия:
    Объявление анонимной функции
    function( ) {
    }

    и сразу ее вызов
    ()()
    Первые скобки это синтаксический приём для вызова анонимной функции. Есть и другие методы. Например
    +function(){}()
    Вторые скобки - это собственно вызов функции и при необходимости передача параметра (обычный вызов же)

    ()(jQuery) — в параметре передается jQuery

    function($){} — а тут этот параметр объявлен и используется

    (function($){})(jQuery) — итого, объявили анонимную функцию, и вызвали ее, передав параметром объект jQuery

    Например, доллар у вас используется другой библиотекой, пусть MooTools.
    Тогда вы запускаете jQuery в безконфликтном режиме

    jQuery.noConflict();

    Это значит, что доллар использоваться не будет, и объект будет доступен только по ссылке jQuery.

    Но для удобства вы можете использовать анонимную функцию и безопасно использовать внутри неё переменную доллара

    (function($){
      $('.slider').slick();
    })(jQuery);


    Чтобы стало совсем понятно, конструкцию можно переписать без анонимной функции

    var myFunc = function($){
     // some code
    }
    
    myFunc(jQuery);
    Ответ написан
    Комментировать
  • Уведомления с WordPress в Telegram Bot?

    @Pechenki
    Сам написал такой небольшой плагин именно под эти цели , настроек минимум
    https://pechenki.top/telsender.html
    Ответ написан
    1 комментарий
  • В чем смысл трюка с позиционированием с помощью position: absolute и transform:translate?

    aliencash
    @aliencash
    Партизан
    Дело в том, что если вы даете блоку позицию, то это позиция его верхнего левого угла, а не центра. Чтобы сместить блок в центр ему дается translate, параметры в процентах при этом вычисляются исходя из размеров самого блока. Т.о. вы получаете возможность центровать блок в окне браузера не зная его абсолютных размеров.
    Ответ написан
    Комментировать
  • Можно ли подключить php файл к файлу темы function.php на wordpess?

    Вынести можно.
    Подключать надо через функцию require_once
    // при условии что новый файл будет рядом с Вашим functions.php 
    // или с тем к которому подключаете
    // НазваниеВашегоФайла - заменить на реальное название
    require_once( dirname(__FILE__) . '/НазваниеВашегоФайла.php');


    Скажется ли это на производительности. Или на некоторых хуках и функциях.
    Нет.
    Ответ написан
    2 комментария
  • Как зачеркнуть текст по диагонали?

    siteogra
    @siteogra
    Drupal, JS, Meteor
    jsfiddle.net/aagkg03z/3

    af77170783d14196a1fd921f31524a27.png<span class="strikethrough">15000 руб.</span>

    .strikethrough {
        position: relative;
        font-size: 40px;
    }
    
    .strikethrough:before {
        border-bottom: 3px solid red;
        position: absolute;
        content: "";
        width: 100%;
        height: 50%;
        transform: rotate(-7deg);
    }
    Ответ написан
    Комментировать
  • Как реализовать региональность сайта в WordPress?

    goodee
    @goodee Автор вопроса
    начинающий веб-разработчик
    Повозился немного и решил проблему.
    Сначала проблема с одинаковыми слагами страниц в WordPress:
    Все до смешного просто, создаем страницы, а у нужных выбираем "Родительский элемент".
    Например:
    site.ru/moskva/article
    site.ru/kazan/article
    где moskva и kazan - это родительские страницы соотвественно двух разных страниц article.
    С этим всё просто и понятно.

    Далее я создал "произвольные поля" у страниц городов - "tel" и "address".
    В functions.php темы WordPress добавил следующие строчки:
    // узнаем самый первый родительский элемент (страницу города)
    function parent_postID() {
    	global $post;
    	$postID = $post->ID;
    	if ($post->post_parent) {
    		$anc = get_post_ancestors($postID);
    		$root = count($anc)-1;
    		$parentID = $anc[$root];
    	} else {
    		$parentID = $postID;
    	}
    	return $parentID;
    }
    
    // узнаем самую корневую страницу
    function show_gorod() {
    	global $post;
    	$postID = $post->ID;
    	$parentID = parent_postID();
    	if (!is_front_page() and ($parentID or $postID)) {
    		$city_name = get_the_title($parentID);
    		$city_link = get_the_permalink($parentID);
    		$city_class = 'gorod';
    		$city_string = '<a class="'.$city_class.'" href="'.$city_link.'">'.$city_name.'</a>';
    	} else {
    		$city_name = 'Выберите город:';
    		$city_class = 'gorod small';
    		$city_string = '<p class="'.$city_class.'">'.$city_name.'</p>';
    	}
    
    	return $city_string;
    }

    После чего на любой дочерней странице и странице города отображалась информация записанная в родительской странице.
    Достаточно было указать в шаблоне <?php echo show_gorod() ?>
    и выводилась нужная информация.

    Так что всем спасибо за ответы-советы *sarcasm*.
    Ответ написан
    Комментировать
  • Как подключить свой кастомный слайдер вместо стандартного woocommerce flexslide?

    @weart
    Я тоже слик использую в товаре.

    Нужно всего лишь сделать свой шаблон product-image.php с нужной разметкой и классами, на который повесить слик (верстку придется подогнать ну и использовать вертикальные превьюшки в слике)

    5c7ed467aea5d217008734.png

    Ну и отключить ненужное:

    remove_theme_support( 'wc-product-gallery-zoom' );
    remove_theme_support( 'wc-product-gallery-lightbox' );
    remove_theme_support( 'wc-product-gallery-slider' );
    Ответ написан
    6 комментариев
  • Почему не проходит заказ на woocommerce, и просит ввести адрес для продолжения?

    @balaknegor
    А вот так это делается руками.
    в functions.php пишем:

    add_filter( 'woocommerce_checkout_fields' , 'custom_override_checkout_fields' );
      
    function custom_override_checkout_fields( $fields ) {
      unset($fields['billing']['billing_country']);  //удаляем! тут хранится значение страны оплаты
      unset($fields['shipping']['shipping_country']); ////удаляем! тут хранится значение страны доставки
     
      return $fields;
    }
    Ответ написан
    2 комментария
  • Contact form 7 + popup почему перегружается страница?

    @sofia_karroll
    Нашла святого человека
    в шапку добавь wp_head() если не помогает, то в wp-config добавь define ('WPCF7_LOAD_JS', true или false );

    или вообще можно принудительно прописать в шапку:
    <script type='text/javascript' src='/wp-content/plugins/contact-form-7/includes/js/jquery.form.min.js?ver=твоя версия скрипта'></script>
    <script type='text/javascript'>
    /* <![CDATA[ */
    var _wpcf7 = {"loaderUrl":"\/wp-content\/plugins\/contact-form-7\/images\/ajax-loader.gif","sending":"Sending ..."};
    /* ]]> */
    </script>
    <script type='text/javascript' src='/wp-content/plugins/contact-form-7/includes/js/scripts.js?ver=твоя версия скрипта'></script>


    Это не мой ответ, но у меня это сработало. Нашла ответ этого святого человека здесь

    Я так поняла, что подобная проблема возникает, когда сам пытаешься написать шаблон. Мысль пришла, когда проверила работу contact form 7 на обычной теме из предложенных WP
    Ответ написан
    5 комментариев