Ответы пользователя по тегу PHP
  • Как из вычленить число из цены и записать в переменную в шаблоне cs cart?

    @ligisayan Автор вопроса
    Наконец победил!

    Вот так:
    {assign var="my_price" value=fn_format_price_by_currency($product['base_price'], CART_PRIMARY_CURRENCY, 'UAH')}
    Ответ написан
    Комментировать
  • Как установить модуль php-xml на хостинг с ISPmanager?

    @ligisayan Автор вопроса
    Обнаружил, что для каждого из 4 проектов в ips manager были свои настройки и версии php на сервере, и соответственно для искомого сайта была выбрана нелогично, но другая версия, не в которой правил расширения.

    Соответственно в ней и не был включен модуль **XMLReader**

    На решение натолкнула запись `php` версии в заголовке таблицы, которая отдает

    phpinfo();

    В панели не увидел где это написано
    Ответ написан
    Комментировать
  • Как при удалении последнего товара переадресовывать на шаблон с пустой корзиной?

    @ligisayan Автор вопроса
    Нашел решение - привязался к триггеру updated_wc_div

    $('body').on('updated_wc_div',function() {
       location.reload(); // uncomment this line to refresh the page.
    });
    Ответ написан
    Комментировать
  • Как избавиться от уведомления "товар удален. отменить?"?

    @ligisayan Автор вопроса
    Сработало только скрытие по полному пути в стилях
    .site-content>.col-full>.woocommerce>.woocommerce-message {
    	display: none!important;
    }
    Ответ написан
    Комментировать
  • Есть ли способ удалить функцию с хука wordpress?

    @ligisayan Автор вопроса
    Решение найдено! Нужно удалять хук через подключение хука инициализации init
    add_action( 'init', 'jk_remove_storefront_header_search' );
    function jk_remove_storefront_header_search() {
    remove_action( 'storefront_header', 'storefront_product_search', 40 );
    }


    Вот, кстати, интересная статья по этому вопросу
    remove_action или remove_filter не работает в дочерней теме WordPress, если пытаться удалить хуки родительской темы
    В родительской теме определен ряд хуков, которые мешают мне и хочется их удалить в дочерней теме.
    Логично предположить что нужно просто вставить remove_action или remove_filter в function.php дочерней темы.
    Но не тут то было!
    Это не работает.
    Как оказывается, function.php дочерней темы грузится перед тем же файлом родительской темы. И если использовать обычную схему, то получится что попытка удаления хука произойдет перед его добавлением. Что как мы знаем по кодексу оказывается безрезультатным.
    Таким образом нам нужно добиться ситуации, когда удаление хука произойдет после его определения.
    Как это сделать?
    Все очень просто Нужно удаление хука зацепить на более поздний хук, который выполнится после определения хука родительской темы. О как
    Но все просто. Самый элементарный хук init вполне нам подойдет.
    И делаем так:
    add_action('init','removeOldFunction');
    function removeOldFunction(){
    remove_action( 'template_redirect', 'alienship_nice_search_redirect' );
    }

    Этим кодом мы удалим хук alienship_nice_search_redirect, который определен в родительской теме, при помощи function.php дочерней.
    Проверено
    Все хорошо, пока дело не касается сайдбара. Там хук инициализации виджетов работает еще позднее чем init, потому нужно вешаться на хук after_setup_theme.
    Ну и в других случаях. Удаляя тот или иной хук не забудьте проверить его порядок загрузки и убедиться что он грузится позднее, чем тот который вы удаляете.
    Ответ написан
    Комментировать
  • Как правильно подключить js на определенных страницах wordpress?

    @ligisayan Автор вопроса
    var tabs = document.querySelectorAll("#new-tab .carousel-indicators > *")
    Ответ написан
    Комментировать
  • Почему WP_Query возвращает лишние данные?

    @ligisayan Автор вопроса
    Спасибо Павел - решение найдено: правильный запрос в моем случае должен был быть с параметром 'name', а не 'post_name'
    $otkatnye_gates = new WP_Query([
                            'post_type'     => 'section_gates',
          'post_name'     => 'otkatnye-vorota',
                            'post_status'   => 'publish',
                            'posts_per_page'=> -1,
                            'order'         => 'ASC'
                        ]); 
      var_dump($otkatnye_gates);

    Документация
    Ответ написан
    Комментировать
  • Почему при переносе сайта с хостинга на хостинг ошибки в кодировке?

    @ligisayan Автор вопроса
    ответ, как оказалось, прост до примитива -нужно было всего лишь заменить в файле config.php строчку:
    define('DB_CHARSET', 'utf8mb4');
    на
    define('DB_CHARSET', 'utf8');
    и лишние деньги на переезд тратить не надо
    Ответ написан
    Комментировать
  • Как после пересчета данных и обновления страницы открывать ее на определенной вкладке?

    @ligisayan Автор вопроса
    все гораздо проще - в файле cart.php нужно было подправить строчку - дописать в action .'#mycart'
    <form action="<?php echo esc_url( WC()->cart->get_cart_url() ).'#mycart'; ?>" method="post">
    Ответ написан
    Комментировать
  • Как установить инстаграмную ленту в виде карусели на сайт?

    @ligisayan Автор вопроса
    нашел плагин Enjoy Plugin for Instagram для wordpress
    Единственное, что пока не могу разобраться, как зациклить карусель
    Ответ написан
    Комментировать
  • Почему информация о пользователе сохраняется только при повторной отправке формы?

    @ligisayan Автор вопроса
    Решение через скрипты
    <p><label for="IDLastName">Фамилия:</label>
       <input type="text" name="last_name" id="IDLastName" value=""  />
    </p>
    <input type="text" name="user_login" id="IDUserLogin" value="" />
    <script>
    jQuery(function($) {
        $('#IDLastName').keyup(function() {
            $('#IDUserLogin').val($('#IDLastName').val());
        })
    });
    </script>
    Ответ написан
    Комментировать
  • Как добавить поле переключателя в профиль пользователя?

    @ligisayan Автор вопроса
    // дополнительные данные на странице профиля
    add_action('show_user_profile', 'my_profile_new_fields_add');
    add_action('edit_user_profile', 'my_profile_new_fields_add');
    
    add_action('personal_options_update', 'my_profile_new_fields_update');
    add_action('edit_user_profile_update', 'my_profile_new_fields_update');
    
    function my_profile_new_fields_add($user){ 
    ?>
    	<h3>Дополнительные данные</h3>
    	<table class="form-table">
            <tr>
    			<th><label for="gender">Пол</label></th>
    			<td>
                    <p><input type="radio" name="gender" value="мужской" <?php checked('мужской', get_user_meta($user->ID, 'gender', true)); ?>> мужской</p>
                    <p><input type="radio" name="gender" value="женский" <?php checked('женский', get_user_meta($user->ID, 'gender', true)); ?>> женский</p>
    			</td>
    		</tr>
    	</table>
    	<?php            
    }
    
    // обновление
    function my_profile_new_fields_update($user_id){
    	if ( !current_user_can( 'edit_user', $user_id ) )
        return false;
    	update_usermeta( $user_id, 'gender', $_POST['gender'] );
    }
    Ответ написан
    Комментировать
  • Почему в слайдере картинки нулевого размера и не подгружается навигация?

    @ligisayan Автор вопроса
    Вообщем, нашел правильный ответ. Мало того, что в теме слайдер был подключен для определенных страниц:.
    if ( is_home() || is_front_page()|| is_page_template('template-blog.php')) { 
        wp_enqueue_script('jquery.flexslider-min', get_template_directory_uri() .'/js/jquery.flexslider-min.js','','', true);
        wp_enqueue_script('jquery.flexslider.start.main', get_template_directory_uri() .'/js/jquery.flexslider.start.main.js','','', true);
        }

    так еще и путь был прописан через get_template_directory_uri(), а у меня все подключается через дочернюю тему, т.е. get_stylesheet_directory_uri(). Исправил - заработало!
    Ответ написан
    Комментировать
  • Как ограничить вывод только для страниц с категориями товаров?

    @ligisayan Автор вопроса
    Вообщем, правильная функция для вывода:
    function mad_is_product_category( $term = '' ) {
    		return is_tax( 'product_cat', $term );
    	}
    Ответ написан
    Комментировать
  • Почему не применяется локализация в дочерней теме wordpress?

    @ligisayan Автор вопроса
    Нашел самое правильное решение:
    /**
     * Child theme language
     */
    function my_child_theme_setup() {
        $path = get_stylesheet_directory() . '/lang';
        load_child_theme_textdomain( 'child_theme_language', $path );
    }
    add_action( 'after_setup_theme', 'my_child_theme_setup' );


    Чтобы файл локализации можно было поместить в папку с дочерней темой нужно, чтобы обязательно! первый параметр в функции load_child_theme_textdomain() совпадал со вторым в вызове функции перевода! в данном случае 'child_theme_language'
    _e( 'My translatable text goes here.', 'child_theme_language' );

    и тогда названия файлом должны быть ru_RU.po и ru_RU.mo
    Ответ написан
    Комментировать
  • В какую функцию добавления в корзину wordpress woocommerce можно подставить триггер?

    @ligisayan Автор вопроса
    Сюда можно вот так if ( ! function_exists( 'woocommerce_mini_cart' ).trigger("my") )?
    if ( ! function_exists( 'woocommerce_mini_cart' ) ) {
    
    	/**
    	 * Output the Mini-cart - used by cart widget
    	 *
    	 */
    	function woocommerce_mini_cart( $args = array() ) {
    
    		$defaults = array(
    			'list_class' => ''
    		);
    
    		$args = wp_parse_args( $args, $defaults );
    
    		wc_get_template( 'cart/mini-cart.php', $args );
    	}
    }
    Ответ написан
    Комментировать