Сайты под ключ, сделанные с любовью

Полезные коды для сайта на WordPress

5 – “Нравится”
Vladimir Sergeev
Vladimir Sergeev
26 мая, 2023
4 мин.
95
Понравилась статья? Поделитесь!
VK
Telegram
WhatsApp

Оглавление

В этой статье поделимся с вами популярными кодами для сайта на WordPress. Все они собирались с разных проектов при разных задачах и условиях поштучно, вам отдаем оптом, нам не жалко!

Большая часть php кодов вставляется в файл functions.php, если вы не знаете где он находится и как в него вставить – ознакомьтесь с этой статьей.

Код HTTPS переадресации .htaccess

				
					RewriteEngine On
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
				
			

Данный сниппет позволит вам сделать 301 редирект для всех страниц вашего сайта с HTTP на HTTPS протокол.

Вставьте его в ваш файл .htaccess, находящимся в корневной папке сайта на хостинге.

Php коды для Woocommerce

Отключение разброса вариативной цены товара Woocommerce

Обычно Woocommerce вызывает множество вопросов при работе с ним и многое хочется исправить, именно поэтому все коды для сайта на wordpress + wocommerce объединены для вашего удобства. 

Для стандартного вариативного товара woocommerce предлагает именно такое отображение вариативной цены. 

Выглядит неплохо, но не всем подходит, рассмотрим другие варианты отображения ниже.

				
					function wc_varb_price_range( $wcv_price, $product ) {
 
    $wcv_reg_min_price = $product->get_variation_regular_price( 'min', true );
    $wcv_min_sale_price    = $product->get_variation_sale_price( 'min', true );
    $wcv_max_price = $product->get_variation_price( 'max', true );
    $wcv_min_price = $product->get_variation_price( 'min', true );
 
    $wcv_price = ( $wcv_min_sale_price == $wcv_reg_min_price ) ?
        wc_price( $wcv_reg_min_price ) :
        '<del>' . wc_price( $wcv_reg_min_price ) . '</del>' . '<ins>' . wc_price( $wcv_min_sale_price ) . '</ins>';
 
    return ( $wcv_min_price == $wcv_max_price ) ?
        $wcv_price :
        sprintf('От:%s%s', $prefix, $wcv_price);
}
 
add_filter( 'woocommerce_variable_sale_price_html', 'wc_varb_price_range', 10, 2 );
add_filter( 'woocommerce_variable_price_html', 'wc_varb_price_range', 10, 2 );
				
			

Если в карточке товара цена показывается как диапазон значений, например 30-150 $, то данный сниппет превратит ее в “от 30 $”.

Префикс “от” может быть произвольным, или вы совсем можете его убрать, для этого обратите внимание 14 строчку кода.

Как добавить изображения товаров на страницу «Оформление заказа»

				
					add_filter( 'woocommerce_cart_item_name', 'sergeev_studio_checkout_product_images', 25, 2 );
 
function sergeev_studio_checkout_product_images( $name, $cart_item ) {
 
	if ( ! is_checkout() ) {
		return $name;
	}
 
	$product = $cart_item[ 'data' ];
	$image = $product->get_image( array( 50, 50 ), array( 'class' => 'alignleft' ) );

	return $image . $name;
 
}
				
			

Крайне полезный php код для woocommerce, позволяющий чуть-чуть разнообразить внешний вид страницы оформления заказа.

Изображение на странице оформления заказа

Скрыть категорию в каталоге

				
					add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

    if ( ! $q->is_main_query() ) return;
    if ( ! $q->is_post_type_archive() ) return;

    if ( ! is_admin() && is_shop() ) {

        $q->set( 'tax_query', array(array(
            'taxonomy' => 'product_cat',
            'field' => 'slug',
            'terms' => array( 'vasha-categoriya' ), // Ссылка категории, без домена https://sergeev.studio/vasha-categoriya
            'operator' => 'NOT IN'
        )));

    }

    remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

				
			

Данный сниппет поможет вам убрать какую-то товарную категорию из общего каталога. Полезно, когда есть категория определенных товаров, которые должны быть либо в закрытом доступе, либо предлагаться как подарки к основному продукту.

Убрать поля Woocommerce

				
					add_filter('woocommerce_checkout_fields','remove_checkout_fields');
function remove_checkout_fields($fields){
    unset($fields['billing']['billing_first_name']);
    unset($fields['billing']['billing_last_name']);
    unset($fields['billing']['billing_company']);
    unset($fields['billing']['billing_address_1']);
    //unset($fields['billing']['billing_address_2']); //Если какое-то поле нужно оставить, ставьте перед ним "//" как в этом примере
    unset($fields['billing']['billing_city']);
    unset($fields['billing']['billing_postcode']);
    unset($fields['billing']['billing_country']);
    unset($fields['billing']['billing_state']);
    unset($fields['billing']['billing_phone']);
    unset($fields['order']['order_comments']);
    unset($fields['billing']['billing_email']);
    unset($fields['account']['account_username']);
    unset($fields['account']['account_password']);
    unset($fields['account']['account_password-2']);
    return $fields;
}

				
			

Один из наиболее часто используемых. Woocommerce по умолчанию имеет бессметное количество полей на странице оформления заказа, и вот сюрприз, 90% людей они все не нужны.

Данный код для сайта на связке wordpress +  wocoommerce позволит вам с легкостью отключить ненужные вам поля. Обратите внимание на 7 строку кода, там есть пояснение, как работать с данным сниппетом.

Убрать надоедливый зум изображения товара

				
					remove_theme_support( 'wc-product-gallery-zoom' );
				
			

Если вас раздражает непонятный зум главного изображения товара в карточке товара при наведении мыши – этот сниппет сильно поможет вам.

Закрытие попапа элементора после клика внутри него

				
					<script> jQuery(function($){ $(document).on('click','.elementor-location-popup a', function(event){ elementorProFrontend.modules.popup.closePopup( {}, event); }); }); </script>
				
			

Незаменимый код для вашего сайта на wordpress если вы работаете с конструктором страниц Elementor и его всплывающими окнами. 

Представим, что вы сделали мобильное меню через всплывающее окно и при клике на якорную ссылку – вас перекидывает в нужное место, но пользователь этого не видит, так как у него на весь экран все то же всплывающее окно.

Данный скрипт позволяет избежать данной путаницы и закрыть всплывающее окно, как только внутри него будет совершен клик.

Данный скрипт можете вставить в HTML виджет внутрь вашего всплывающего окна. А если вам нужно закрывать какое-то конкретное всплывающее окно, то в этом коде вам нужно указать его класс, который вы ему присвоите вместо .elementor-location-popup

Закрытие сайта от индексации в .htaccess

				
					SetEnvIfNoCase User-Agent "^Googlebot" search_bot
SetEnvIfNoCase User-Agent "^Yandex" search_bot
SetEnvIfNoCase User-Agent "^Yahoo" search_bot
SetEnvIfNoCase User-Agent "^Aport" search_bot
SetEnvIfNoCase User-Agent "^msnbot" search_bot
SetEnvIfNoCase User-Agent "^spider" search_bot
SetEnvIfNoCase User-Agent "^Robot" search_bot
SetEnvIfNoCase User-Agent "^php" search_bot
SetEnvIfNoCase User-Agent "^Mail" search_bot
SetEnvIfNoCase User-Agent "^bot" search_bot
SetEnvIfNoCase User-Agent "^igdeSpyder" search_bot
SetEnvIfNoCase User-Agent "^Snapbot" search_bot
SetEnvIfNoCase User-Agent "^WordPress" search_bot
SetEnvIfNoCase User-Agent "^BlogPulseLive" search_bot
SetEnvIfNoCase User-Agent "^Parser" search_bot

				
			

Данный сниппет поможет закрыть ваш сайт на wordpress от индексации, это является жестким запретом, а не рекомендацией для роботов как в случае с Robots.txt

Кстати, касаемо robots.txt

Закрытие сайта от индексации в robots.txt

				
					User-agent: * 
Disallow: / 
				
			

Эти строчки помогут закрыть вам сайт от индексации от всех поисковых систем. Важно понимать, что robots.txt носит рекомендательный характер для роботов, но обычно и одного его хватает. 

Создайте просто текстовый файл “Robots.txt” – внесите в него данные строчки и сохранить в корневой папке вашего сайта

Отключение автообновления WordPress

				
					define( 'AUTOMATIC_UPDATER_DISABLED', true );
				
			

Эту строчку нужно добавить в ваш конфиг – wp-config. Находится он в корневой папке.

Php код перевода текста в WordPress

				
					add_filter('gettext', 'translate_text');
add_filter('ngettext', 'translate_text');
 
function translate_text($translated) {
$translated = str_ireplace('Cart totals', 'Сумма заказа', $translated);
$translated = str_ireplace('Cart totals', 'Сумма заказа', $translated);
return $translated;
}
				
			

Один из самых часто используемых кодов для сайта на wordpress в нашей разработке. Он позволяет переводить любую фразу на сайте без установки дополнительных плагинов по типу “Loco Translate”.

В случае когда нужно перевести парочку фраз и не хочется грузить сайт целым плагином – это решение точно для вас.

Строки 5-6 отвечают как раз за перевод. “Cart totals” – то, что нужно перевести, “Сумма заказа” – на что меняем.

ВАЖНО! Эти строки вы можете копировать и далее, столько, сколько вам нужно переводов.

5 – “Нравится”
VK
Telegram
WhatsApp

Похожие материалы

Остались вопросы или нужна помощь?

Оставьте заявку и я свяжусь с вами в ближайшее время и отвечу на все вопросы. Я не кусаюсь :)

Пишите в мессенджеры, отвечаю в течение 15 минут.

Доверьте создание вашего сайта мне, обещаю только обдуманный подход, никакого обмана и адекватные цены.

Оставьте заявку

Перезвоню вам в течение 10 минут в рабочее время