Skip to content

Instantly share code, notes, and snippets.

View soderlind's full-sized avatar

Per Søderlind soderlind

View GitHub Profile
@soderlind
soderlind / README.md
Last active July 24, 2025 08:04
Create a WordPress custom search
@soderlind
soderlind / README.md
Last active May 8, 2025 13:43
Delete failed and cancelled GitHub Actions workflow runs for a given workflow

Delete failed and cancelled GitHub Actions workflow runs

The script will remove failed and cancelled workflow runs from your GitHub Action workflow history log.

failed-workflow-run

Prerequisite

@soderlind
soderlind / README.md
Last active December 21, 2024 11:57
Semgrep Static Application Security Testing for PHP, code added using composer.

Semgrep SAST (Static Application Security Testing) for WordPress

I use this GitHub Action to security test our WordPress themes

So what does the GitHub Action do?

It;

@soderlind
soderlind / README.md
Last active December 18, 2024 18:08
Favorite keybindings in Visual Studio Code: Select next file or next workspace

Favorite keybindings in Visual Studio Code

First, disable multible tabs: Set Workbench > Editor: Show Tabs to single

Included in VS Code:

  • Control+Tab: Next File
  • Shift+Control+Tab: Previous File

Custom, add the code in keybindings.json to VS Code (Shift+Command+P, select Preferences: Open Keybord Shortcuts (JSON))

  • Option+Tab: Next Workspace (file picker)
@soderlind
soderlind / README.md
Last active May 20, 2025 16:16
WordPress Web Application Firewall (WAF) Custom rules for Azure Front Door (AFD)
@soderlind
soderlind / waf-policy.bicep
Last active September 19, 2024 10:40
WordPress: Use Azure Front Door to rate limit access the login page
resource wafPolicy 'Microsoft.Network/FrontDoorWebApplicationFirewallPolicies@2022-05-01' = {
name: wafPolicyName
location: 'global'
sku: {
name: frontDoorSkuName
}
tags: tags
properties: {
policySettings: {
enabledState: 'Enabled'
@soderlind
soderlind / README.md
Last active September 11, 2024 08:30
WordPress: Add a media inserter to the block editor using the registerInserterMediaCategory

I did this to show how easy it is to create your own media inserter. In production I would create a a server that returns the json.

Install

  1. Create a block
    • in wp-content/plugins run npx @wordpress/create-block@latest my-image-inserter
    • cd my-image-inserter
  2. Copy index.js to my-image-inserter/src/index.js
  3. Delete my-image-inserter/my-image-inserter.php
  4. Copy plugin.php to my-image-inserter/plugin.php
@soderlind
soderlind / copilot.aliases.zshrc
Last active July 6, 2024 14:07
GitHub Copilot CLI aliases
# GitHub CLI aliases
eval "$(gh copilot alias -- zsh)" # or bash
# Old school aliases
alias '??'='ghcs'
alias 'git?'='ghcs -t git'
alias 'gh?'='ghcs -t gh'
alias 'explain'='ghce'
@soderlind
soderlind / docker-compose.yml
Last active March 14, 2025 22:53
Buggregator for local WordPress development
services:
buggregator:
image: ghcr.io/buggregator/server:latest
depends_on:
buggregator-database:
condition: service_healthy
ports:
- 127.0.0.1:8000:8000 # Sentry, Ray
- 127.0.0.1:1025:1025 # SMTP
environment:
@soderlind
soderlind / README.md
Last active January 23, 2024 16:06
WordPress Playground blueprint for a block plugin.

Live Preview for Jobbnorge Block

Plugin Previews are now available for opt-in, I've added a live preview to my block plugin

On wordpress.org, there are two things required for a plugin preview button to appear to all users:

  1. A valid blueprint.json file must be provided in the plugins assets/blueprints sub-directory.
  2. The plugin preview must be set to “public” from the plugin’s Advanced view by a committer.

Read the blueprint documentation for more information.