Skip to content

Instantly share code, notes, and snippets.

@campusboy87
campusboy87 / wpcf7_validate.php
Created April 14, 2018 13:21
Contact Form 7 validate 2 fileds
<?php
add_filter( 'wpcf7_validate', 'wpq_validate' );
function wpq_validate( $result ) {
$form = WPCF7_Submission::get_instance();
$phone = $form->get_posted_data('phone'); // Имя поля с телефоном
$email = $form->get_posted_data('email'); // Имя поля с email
$error_msg = 'Заполните телефон или email';
if( empty($phone) && empty( $email ) ) {
@campusboy87
campusboy87 / add_category_item_menu.php
Last active April 15, 2018 22:41
Выводит в админ-сайдбар пункты меню для каждой непустой рубрики
<?php
add_action( 'admin_menu', 'add_category_item_menu' );
function add_category_item_menu() {
global $menu;
$cats = get_categories();
if ( $cats ) {
@campusboy87
campusboy87 / get_id_cat_product_by_vendor.php
Created May 24, 2018 10:53
Возвращает ID рубрик товаров для указанного продавца.
<?php
/**
* Возвращает ID рубрик товаров для указанного продавца.
*
* @param int $vendor_id ID продавца.
*
* @return array
*/
function get_id_cat_product_by_vendor( $vendor_id = 0 ) {
global $wpdb;
@campusboy87
campusboy87 / add_icon_to_menu_has_children_li.php
Last active April 15, 2021 11:39
Добавляет иконку элементам LI в меню WordPress, у которых есть дочерние элементы.
<?php
// 1 вариант. Менее надёжен, вдруг класс '"menu-item-has-children" быд удалён через фильтр.
add_filter( 'walker_nav_menu_start_el', 'filter_walker_nav_menu_start_el', 10, 4 );
function filter_walker_nav_menu_start_el( $item_output, $item, $depth, $args ) {
var_dump( $depth, $item );
if ( ! empty( $item->classes ) && in_array( 'menu-item-has-children', $item->classes ) ) {
$item_output = '<span>Иконка</span>' . $item_output;
}
@campusboy87
campusboy87 / example-bem-menu.html
Last active October 13, 2023 11:55
Преобразует дефолтное меню WordPress в меню на основе методологии БЭМ с помощью только фильтров меню
<ul class="menu menu--main menu--horizontal">
<li class="menu-node menu-node--main_lvl_1 menu-node--active">
<a href="#" class="menu-link menu-link--active">Пункт 1</a>
<ul class="menu menu--dropdown menu--vertical">
<li class="menu-node menu-node--main_lvl_2">
<a href="#" class="menu-link">Подпункт 1.1</a>
</li>
<li class="menu-node menu-node--main_lvl_2">
<a href="#" class="menu-link">Подпункт 1.2</a>
</li>
@campusboy87
campusboy87 / add_items_menu_programmatically.php
Last active April 14, 2021 14:51
Allows you to add menu items to the WordPress menu programmatically (dynamically).
<?php
// 1 вариант
add_filter( 'wp_get_nav_menu_items', function ( $items ) {
$locations = get_nav_menu_locations();
if ( ! is_admin() && isset( $locations['main_menu'] ) ) {
$cats = get_categories();
foreach ( $cats as $cat ) {
$item = new WP_Post( new stdClass() );
@campusboy87
campusboy87 / posts_per_page__my_cpt_settings_api.php
Last active June 18, 2018 13:01
Создадим поле для указания сколько записей выводить в рубриках произвольного типа записи
<?php
add_action( 'admin_init', 'posts_per_page__my_cpt_settings_api_init' );
function posts_per_page__my_cpt_settings_api_init() {
register_setting( 'reading', 'posts_per_page__my_cpt', 'sanitize_text_field' );
add_settings_field(
'posts_per_page__my_cpt',
'<label for="posts_per_page__my_cpt">На страницах MY_CPT отображать не более</label>',
'posts_per_page__my_cpt_field_html',
'reading'
@campusboy87
campusboy87 / function_v2.php
Created June 21, 2018 21:20 — forked from andxbes/function_v2.php
cf-7 append additional information to mail
<?php
//see https://yadi.sk/i/M5hhJKkU3MkRdN
add_filter("wpcf7_mail_components", function($components, $curent_cf, $sender ){
date_default_timezone_set('America/Sao_Paulo');
$data = date("Y-m-d H:i:s");
$components['body'] = str_replace("[protocol]", $data , $components['body'] );
@campusboy87
campusboy87 / request.php
Created June 26, 2018 15:00
Имитирует функционал "Отображать на статической странице список записей".
<?php
add_filter( 'request', function ( $query_vars ) {
if ( isset( $query_vars['pagename'] ) && $query_vars['pagename'] === 'all-articles' ) {
add_filter( "pre_option_page_for_posts", function () {
return 484; // ID нужной страницы
} );
}
return $query_vars;
@campusboy87
campusboy87 / wpcf7_modal_invalid.php
Last active March 28, 2024 11:20
Displays a message about the successful submission of the form in a modal window for the Contact Form 7 plugin
<?php
/**
* Plugin Name: CF7 Modal Invalid Answer
* Plugin URI: https://gist.github.com/campusboy87/a056c288c99feee70058ed24cee805ad
* Author: Campusboy (wp-plus)
* Author URI: https://www.youtube.com/wp-plus
*/
add_action( 'wp_enqueue_scripts', 'wpcf7_modal_invalid_js' );
add_action( 'wp_footer', 'wpcf7_modal_invalid_js_inline', 999 );