Skip to content

Instantly share code, notes, and snippets.

View codearachnid's full-sized avatar
:octocat:
curiouser and curiouser

Timothy Wood codearachnid

:octocat:
curiouser and curiouser
View GitHub Profile
<?php
// The field accepts a value with this structure
$value = [
'address' => '123 Example St, Townsville XYZ 1234, Country',
'lat' => - 38.1486228,
'lng' => 144.360414,
'zoom' => 14,
'place_id' => 'Ei0xMjMgTW9vcmFib29sIFN0LCBHZWVsb25nIFZJQyAzMjIwLCBBdXN0cmFsaWEiMBIuChQKEgmX0JaIHBTUahFyH_LC9sYD8hB7KhQKEglDz-DYDxTUahECZY8QisCjzg',
'street_number' => 123,
<?php
// The field accepts a value with this structure
$value = [
'address' => '123 Example St, Townsville XYZ 1234, Country',
'lat' => - 38.1486228,
'lng' => 144.360414,
'zoom' => 14,
'place_id' => 'Ei0xMjMgTW9vcmFib29sIFN0LCBHZWVsb25nIFZJQyAzMjIwLCBBdXN0cmFsaWEiMBIuChQKEgmX0JaIHBTUahFyH_LC9sYD8hB7KhQKEglDz-DYDxTUahECZY8QisCjzg',
'street_number' => 123,
@codearachnid
codearachnid / vuejs-actions-filters.md
Last active May 5, 2023 18:33
A recommendation on building actions/filters management similar to WordPress within a Vuejs (3) app.

VueJS (3) Action + Filters

This is a proposal to extend a compiled Vuejs application at runtime by adding actions and filters. This would allow for permitting functional extension to the data models/patterns or runtime executions of the application with discrete injection points by the development team. The purpose is to allow extensibility of functionality or filtering of data that the original application may not have considered or leveraged due to constraints. This concept is a potential benefit/risk because it gives discrete exposure to aspects of the application during runtime. By exposing controlled points during runtime for global access into the vuejs application this allows other UI frameworks within the same global space an opportunity to hook into application based api with promise driven callbacks.

[Sequence diagram for reference](https://viewer.diagrams.net/?tags=%7B%7D&amp;highlight=0000ff&amp;edit=_blank&amp;layers=1&amp;nav=1&amp;title=vuejs-actions-filters.drawio#R%3Cmxfile%3E%3Cdiagram%20name%3D%22Overvi

@codearachnid
codearachnid / ninja_table_raw_sql_placeholders.php
Created March 10, 2023 04:07
Improve the Ninja Tables admin experience by hooking into `ninja_table_raw_sql_placeholders` filter to add additional placeholders while in admin to allow queries to run in psuedo-mode.
<?php
/**
* hook into `ninja_table_raw_sql_placeholders` filter to add additional placeholders
* while in admin to allow queries to run in psuedo-mode
* @param array $filter
*/
add_filter('ninja_table_raw_sql_placeholders', function($filter){
if( is_admin() ){
/**
* these should already be set passing into this filter
@codearachnid
codearachnid / ninjatable-rest-api.php
Created March 10, 2023 00:45
Expose Ninja Table data as JSON via REST API.
<?php
/*
* Code snippet to expose ninja table data as JSON via REST API
* Example URL: https://yourdomain.com/wp-json/ninjatable/v1/table/#
* In this working example you should enable authentication to protect your data
* example is contained in `get_items_permissions_check`
* Route logic sourced from https://developer.wordpress.org/rest-api/extending-the-rest-api/adding-custom-endpoints/
*/
add_action('rest_api_init', function () {
@codearachnid
codearachnid / _notes.md
Last active March 8, 2023 21:56
Gravity Forms: Add "other" option to checkboxes

This is a hacked in way of enabling "other" options to the Gravity Forms Checkbox Field https://docs.gravityforms.com/checkboxes/. Instead of creating a new field as a clone of checkbox or leveraging the built in class hooks to filter the processing I felt it would be better performance to directly modify the core GF logic in hopes they will adopt this in a future release. An example of this is seen like this !Screenshot

The status of these changes will affect the following areas

  • Changes were made against GF Version: 2.7.2
  • I have marked changed areas in these files with a comment Code4OtherChoice it's kludgy but worked for me to update the files as needed during update comparisons.
  • Validation works if the user has not changed the default value when selecting other
  • Validation works if no fields on form are selected
  • "Other" value saves successfull
@codearachnid
codearachnid / .htaccess
Created March 8, 2023 02:20
Convert WordPress /wp-admin/admin-ajax.php to /api
RewriteRule ^api$ /wp-admin/admin-ajax.php [L]
@codearachnid
codearachnid / wp-custom-post-status.php
Created March 8, 2023 01:48
WordPress Custom Post Status OOP
<?php
// sourced from https://www.ibenic.com/create-custom-wordpress-post-status/ and https://stackoverflow.com/a/49569592
class WordPress_Custom_Post_Status {
/**
* Post Types for this status
* @var array
*/
@codearachnid
codearachnid / array_keys_exists.php
Created February 13, 2023 18:16
Because PHP is lacking an array diff for keys within array check
<?php
if(!function_exists('array_keys_exists')){
function array_keys_exists(array $keys, array $arr) {
return !array_diff_key(array_flip($keys), $arr);
}
}
@codearachnid
codearachnid / wp-db-cleanup.sql
Last active February 17, 2026 05:26
Safely delete orphan postmeta, attachment, gravity form entries in WordPress database *** ALWAYS BACKUP YOUR DATA FIRST ***
-- List all orphan rows from wp_postmeta
SELECT * FROM wp_postmeta
LEFT JOIN wp_posts ON wp_posts.ID = wp_postmeta.post_id
WHERE wp_posts.ID IS NULL;
-- Delete orphan postmeta
DELETE pm
FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID IS NULL;