В этой статье поделимся с вами популярными кодами для сайта на 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 ) :
'' . wc_price( $wcv_reg_min_price ) . '' . '' . wc_price( $wcv_min_sale_price ) . '';
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' );
Если вас раздражает непонятный зум главного изображения товара в карточке товара при наведении мыши — этот сниппет сильно поможет вам.
Закрытие попапа элементора после клика внутри него
Незаменимый код для вашего сайта на 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» — то, что нужно перевести, «Сумма заказа» — на что меняем.
ВАЖНО! Эти строки вы можете копировать и далее, столько, сколько вам нужно переводов.