Skip to content

Instantly share code, notes, and snippets.

View mihdan's full-sized avatar
:octocat:
Code is poetry

Mikhail Kobzarev mihdan

:octocat:
Code is poetry
View GitHub Profile
@mihdan
mihdan / wordpress-last-modified.php
Last active October 1, 2024 10:32
Устанавливает заголовок `Last-Modified` для WordPress и умеет обрабатывать заголовок `HTTP_IF_MODIFIED_SINCE`
<?php
add_action( 'template_redirect', 'set_last_modified_headers', 999 );
function set_last_modified_headers() {
if ( ( defined( 'DOING_AJAX' ) && DOING_AJAX )
|| ( defined( 'XMLRPC_REQUEST' ) && XMLRPC_REQUEST )
|| ( defined( 'REST_REQUEST' ) && REST_REQUEST )
|| ( is_admin() ) ) {
return;
@mihdan
mihdan / get_blogid_from_url.sh
Created February 15, 2024 22:26 — forked from dangtrinhnt/get_blogid_from_url.sh
Get blog_id from url using wp-cli
#! /bin/bash
# example csv file, mycsv.csv:
#
# path,some_field
# somepath,some_value
# anotherpath,another_value
# ...
#
# run the following command:
# ./get_blogid_from_url.sh mycsv.csv myblog.com /wordpress/path > result.csv
@mihdan
mihdan / composer_beget.txt
Created November 27, 2023 17:11 — forked from Dreamer0x01/composer_beget.txt
Команды composer на хостинге beget
На некторых хостингах, в том числе хостинге beget, требуется явно указывать версию php для композера, так как версия php в консоли часто отличается от версии, заданной в контрольной панели для сайта.
(Текущую версию php для консоли можно узнать командой php -v)
Например, для версии 7.4 команда будет такая:
composer-php7.4 install
Для других версий php алиасы соответствующих версий будут такими:
composer-php5.3
composer-php5.4
composer-php5.5
composer-php5.6
@mihdan
mihdan / wp-cf7-to-telegram.php
Last active November 5, 2023 13:19
Отправляет все формы Contacy Form 7 с сайта в приватный канал в Telegram
<?php
/**
* CF7 to Telegram
*/
namespace Mihdan\Kadence_Child;
/**
* Class ContactFormToTelegram
*
@mihdan
mihdan / wp-config.php
Created August 9, 2023 21:06 — forked from MikeNGarrett/wp-config.php
All those damned wp-config constants you can never remember.
<?php
// PHP memory limit for this site
define( 'WP_MEMORY_LIMIT', '128M' );
define( 'WP_MAX_MEMORY_LIMIT', '256M' ); // Increase admin-side memory limit.
// Database
define( 'WP_ALLOW_REPAIR', true ); // Allow WordPress to automatically repair your database.
define( 'DO_NOT_UPGRADE_GLOBAL_TABLES', true ); // Don't make database upgrades on global tables (like users)
// Explicitely setting url
@mihdan
mihdan / wp-schema-pro-filter-blog-posting.php
Created July 10, 2023 09:53
Расширяет микроразметку BlogPosting в плагине WP Schema Pro для получения контентной аналитики (дочитываемость, категории, автора, тематики) в Яндекс.Метрике
<?php
add_filter(
'wp_schema_pro_schema_article',
/**
* Расширяет микроразметку BlogPosting для Яндекс.Метрики.
*
* @link https://metrika.yandex.ru/support/metrica/publishers/schema-org/json-ld.html#json-ld__identifier-desc
*
* @param array $schema Схема.
* @param array $data Данные.
@mihdan
mihdan / elementor-widgets-toggle-expand-first-item.js
Created June 1, 2023 09:11
Раскрывает первый элемент виджета Elementor -> Toggle по умолчанию
( function ( $ ) {
$( function () {
/**
* Раскрывает первый элемент виджета Toggle по умолчанию.
*/
$( '.elementor-toggle-item:first-child' )
.children( '.elementor-tab-title' )
.addClass( 'elementor-active' )
.attr({
'aria-expanded': 'true',
@mihdan
mihdan / hooks.php
Created April 13, 2023 20:25 — forked from lilumi/hooks.php
Disable WPML String Translations for Gutenberg Blocks
<?php
/*
WPML checks for gutenberg like this:
\WPML_Page_Builders_Defined->has()
```
if ( 'gutenberg' === $page_builder ) {
if ( version_compare( $wp_version, '5.0-beta1', '>=' ) ) {
return true;
}
}
@mihdan
mihdan / tsf-custom-image-generator.php
Created March 23, 2023 07:05 — forked from sybrew/tsf-custom-image-generator.php
Example snippet to prepend and append image generators for The SEO Framework.
<?php
// Do not include this PHP opening tag if PHP is already opened...
// Ref: https://theseoframework.com/docs/using-filters/
add_filter( 'the_seo_framework_image_generation_params', 'my_tsf_custom_image_generation_args', 10, 3 );
/**
* Adjusts image generation parameters.
*
* @link https://theseoframework.com/docs/api/filters/#append-image-generators-for-social-images
@mihdan
mihdan / pluralize-ru.js
Created January 18, 2023 13:25 — forked from znechai/pluralize-ru.js
JavaScript - Plural forms for russian words
/**
* Plural forms for russian words
* @param {Integer} count quantity for word
* @param {Array} words Array of words. Example: ['депутат', 'депутата', 'депутатов'], ['коментарий', 'коментария', 'комментариев']
* @return {String} Count + plural form for word
*/
function pluralize(count, words) {
var cases = [2, 0, 1, 1, 1, 2];
return count + ' ' + words[ (count % 100 > 4 && count % 100 < 20) ? 2 : cases[ Math.min(count % 10, 5)] ];
}