Skip to content

Instantly share code, notes, and snippets.

View rwsite's full-sized avatar
✌️

Aleksei Tikhomirov rwsite

✌️
View GitHub Profile
#!/usr/bin/env bash
# WordPress Plugin Release Preparer
#
# This script prepares WordPress plugins for distribution by creating a clean ZIP archive
# suitable for uploading to wordpress.org or other distribution platforms.
#
# Features:
# - Removes development files (tests/, vendor/, .github/, .git*, etc.)
# - Cleans up temporary and backup files (*.bak, *~, backup-*.po*)
<?php
/*
Plugin Name: ЮКасса: Статус «Выполнен»
Description: Автоматически меняет статус заказа на «Выполнен» после оплаты через ЮКассу.
Version: 1.0
*/
add_filter( 'woocommerce_payment_complete_order_status', 'ykassa_set_completed_status', 10, 2 );
function ykassa_set_completed_status( $status, $order_id ) {
@rwsite
rwsite / OrderDeliveryRequest.php
Last active October 24, 2024 08:46
Холдирование бонусов
/**
* Hold money.
* Hold customer's money in loyalty program. Payment will be process on POS during processing of an order.
*
* Удерживание денег клиентов в программе лояльности. Оплата будет произведена на POS-терминале во время обработки заказа.
*
* @param string $customerId
* @param string $walletId
* @param int|string $sum
* @param string|null $comment
@rwsite
rwsite / TinyMceEditor.php
Last active July 3, 2024 17:22
Livewire 3 component - TinyMce editor
<?php
/**
* Livewire 3 component - TinyMce editor
*
* 1. Add component to LiveWire folder in project
* 2. Register component, for example add node to AppServiceProvider boot method: Blade::component('editor', Editor::class);
* 3. Register route for file uploader :
* Route::middleware(['web', 'auth'])->post('/tinymce/upload', function (Request $request) {
* $disk = $request->disk ?? 'public';
* $folder = $request->folder ?? 'editor';
@rwsite
rwsite / functions.php
Created June 3, 2024 11:48
woo2iiko - вывод бонусного баланса для зарегистрированных пользовтаелей
function true_logged_in_user_content( $atts, $content = null ) {
if(!class_exists('\iiko\bonuses\Bonuses')){
return 'Ошибка вывода баланса. woo2iiko не подключен';
}
$bonuses = \iiko\bonuses\Bonuses::getInstance();
if ( is_user_logged_in() && !is_null( $content ) && !is_feed() ) {
$balance = $bonuses->get_user_balances();
return 'Ваш бонусный баланс: ' . ($balance ?: '0');
@rwsite
rwsite / example.php
Last active May 24, 2024 11:13
Вывод определенных файлов из папки по шаблону
<?php
/**
* Вывод / Удаление файлов из директории по шаблону
*/
// создание
foreach ( array_fill(0, 6, '// silence is golden') as $key => $value) {
if (!file_exists("АВР № $key.php")) {
file_put_contents("АВР № $key.php", $value);
}
@rwsite
rwsite / wp-autoloader-psr4.php
Last active March 24, 2024 23:51
Wordpress class autoloder with PSR4 standart.
spl_autoload_register(function ($className){
if ( strpos( $className, __NAMESPACE__ ) !== 0 ) {
return;
}
$className = str_replace(__NAMESPACE__ . '\\', 'includes\\', $className);
$path = realpath(__DIR__) . DIRECTORY_SEPARATOR . strtr($className, '\\', DIRECTORY_SEPARATOR) . '.php';
if (is_readable($path)) {
require_once $path;
}
});
@rwsite
rwsite / php-8-attribute-example.php
Last active January 23, 2024 20:38
Пример создания и использования атрибутов PHЗ 8
<?php
/**
* Пример создания и использования атрибутов PHP 8
*/
// Объявление атрибута
#[Attribute]
final class MyAttribute
{
public $value;
@rwsite
rwsite / breadcrumb-category.php
Last active November 19, 2023 22:32
get woocommerce categories sorting by order
<ul>
<?php $term_children = get_term_children( get_queried_object()->term_id, 'product_cat' ); ?>
<?php if($term_children) {
$sorted=[];
foreach ( $term_children as $child ) {
$child_category = get_term_by( 'id', $child, 'product_cat' );
$meta = get_term_meta($child_category->term_id,'order', true);
$child_category->position = intval($meta);
$sorted[$meta] = $child_category;
@rwsite
rwsite / woo2iiko-functions
Created September 18, 2023 12:31
remove DeliveryDurationInMinutes
add_action('woocommerce_before_thankyou', function ($wc_order_id){
$wc_order = wc_get_order($wc_order_id);
if (empty($wc_order) || $wc_order->has_status('failed')) {
return;
}
$wc_order->update_meta_data('deliveryDurationInMinutes', '');
$wc_order->save_meta_data();
}, 5);