Skip to content

Instantly share code, notes, and snippets.

View kasparsd's full-sized avatar

Kaspars Dambis kasparsd

View GitHub Profile
@kasparsd
kasparsd / x.php
Created April 22, 2025 14:02
X API get latest Tweets
<?php
class Twitter {
private string $bearer;
public function __construct( string $bearer ) {
$this->bearer = $bearer;
}
public function get_rate_limits() {
@kasparsd
kasparsd / navigation-item.php
Created April 22, 2025 07:54
Enable .current-menu-ancestor for WP core navigation item block
<?php
/**
* Plugin Name: Navigation Item Ancestors
*/
namespace Config\Navigation_Item;
function get_post_children_ids(): array {
static $children_ids;
@kasparsd
kasparsd / render.php
Created April 14, 2025 12:53
Render template of a login-logout block for WordPress
<?php
/**
* Render the login/logout block.
*
* @param array $attributes Block attributes.
* @param string $content Block content.
* @param array $block Block instance.
*/
$link = [
@kasparsd
kasparsd / 000-redirect-logger.php
Last active March 28, 2025 02:02
A must-use plugin to log and find the source of redirects in WordPress
<?php
/**
* Plugin Name: Redirect Logger
* Description: Find the source of all redirects.
*
* Place this in the mu-plugins directory and check the
* redirects-1234567.json file in the uploads directory for the logs.
*/
namespace WPElevator\Redirect_Logger;
@kasparsd
kasparsd / wp-encrypted.php
Created March 19, 2025 09:55
Initial draft
<?php
abstract class WP_Encrypted_Secret_Method {
protected WP_Encrypted_Secret_Storage $storage;
public function __construct( WP_Encrypted_Secret_Storage $storage ) {
$this->storage = $storage;
}
abstract public function is_supported(): bool;
<?php
namespace YourVendor\Project;
class Config {
private static array $config = [];
private function __construct() {
// Private constructor to prevent direct instantiation
}
<?php
namespace YourVendor\WooCommerce_CLI;
use WP_CLI;
use WooCommerce;
function anon_orders( $args, $assoc_args ) {
$order_ids = wc_get_orders(
[
proxy_cache_path /var/cache/cf-images levels=1:2 keys_zone=CF_IMAGES:10m inactive=7d max_size=10MB;
server {
# ... here goes the rest of your config.
# Proxy example.com/cfimg/original/path/image.jpg?cf=width=100,quality=80
# to example.com/cdn-cgi/image/width=100,quality=80/original/path/image.jpg
location ~* ^/cfimg/(.*)$ {
resolver 1.1.1.1;
@kasparsd
kasparsd / cloudflare-image-server.php
Created February 12, 2025 07:30
Cloudflare Image API mock WordPress plugin
<?php
/**
* Plugin Name: Cloudflare Image API Mock
* Description: Replicate Cloudflare Image API functionality locally.
*
* IMPORTANT: The code below shouldn't be used on production since the
* image path resolution is vulnerable to directory traversal attacks.
*/
add_action(
<?php
// See https://x.com/PoeHaH/status/1875290205894164758
function run_times( callable $callback, int $runs ) {
$start = microtime(true);
for ($i = 0; $i < $runs; $i++) {
$callback();
}
return microtime(true) - $start;
}