-
-
Save tommcfarlin/de2f904eb3d01cf49a2579a4f85beba8 to your computer and use it in GitHub Desktop.
[Using Ray in WordPress Development] Code Samples
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// ... | |
// Enable WP_DEBUG mode | |
define( 'WP_DEBUG', true ); | |
// Enable Debug logging to the /wp-content/debug.log file | |
define( 'WP_DEBUG_LOG', true ); | |
// Disable display of errors and warnings | |
define( 'WP_DEBUG_DISPLAY', false ); | |
@ini_set( 'display_errors', 0 ); | |
// Use dev versions of core JS and CSS files (only needed if you are modifying these core files) | |
define( 'SCRIPT_DEBUG', true ); | |
/* That's all, stop editing! Happy publishing. */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"name": "tommcfarlin/ray-for-wordpress", | |
"description": "An example project for how to use Spatie Ray in WordPress Development.", | |
"type": "wordpress-plugin", | |
"license": "GPL-3.0-or-later", | |
"homepage": "https://github.com/tommcfarlin/ray-for-wordpress", | |
"authors": [ | |
{ | |
"name": "Tom McFarlin", | |
"email": "tom@tommcfarlin.com", | |
"homepage": "https://tommcfarlin.com" | |
} | |
], | |
"support": { | |
"issues": "https://github.com/tommcfarlin/ray-for-wordpress/issues" | |
}, | |
"config": { | |
"preferred-install": "dist", | |
"platform": { | |
"php": "7.4.27" | |
}, | |
"allow-plugins": { | |
"composer/installers": true | |
} | |
}, | |
"repositories": [ | |
{ | |
"type": "composer", | |
"url": "https://wpackagist.org" | |
} | |
], | |
"require": { | |
"php": "7.4.27", | |
"composer/installers": "^1.4" | |
}, | |
"require-dev": { | |
"squizlabs/php_codesniffer": "^3.5", | |
"spatie/ray": "^1.29.0" | |
}, | |
"autoload": { | |
"psr-4": { | |
"RayForWP\\": "src" | |
} | |
}, | |
"minimum-stability": "stable" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Ray For WordPress | |
* | |
* An example project for how to use Spatie Ray in WordPress Development. | |
* | |
* PHP version 7.4.27 | |
* | |
* @category WordPress_Plugin | |
* @package RayForWP | |
* @author Tom McFarlin <tom@tommcfarlin.com> | |
* @license GPLv3 <https://www.gnu.org/licenses/gpl-3.0.en.html> | |
* @link https://github.com/tommcfarlin/ray-for-wordpress/ | |
* @since 11 January 2022 | |
* | |
* @wordpress-plugin | |
* Plugin Name: Ray For WordPress | |
* Plugin URI: https://github.com/tommcfarlin/ray-for-wordpress/ | |
* Description: An example project for how to use Spatie Ray in WordPress Development. | |
* Author: Tom McFarlin <tom@tommcfarlin.com> | |
* Version: 1.0.0 | |
*/ | |
namespace RayForWP; | |
defined('WPINC') || die; | |
require_once __DIR__ . '/vendor/autoload.php'; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Ray For WordPress | |
* | |
* An example project for how to use Spatie Ray in WordPress Development. | |
* | |
* PHP version 7.4.27 | |
* | |
* @category WordPress_Plugin | |
* @package RayForWP | |
* @author Tom McFarlin <tom@tommcfarlin.com> | |
* @license GPLv3 <https://www.gnu.org/licenses/gpl-3.0.en.html> | |
* @link https://github.com/tommcfarlin/ray-for-wordpress/ | |
* @since 11 January 2022 | |
* | |
* @wordpress-plugin | |
* Plugin Name: Ray For WordPress | |
* Plugin URI: https://github.com/tommcfarlin/ray-for-wordpress/ | |
* Description: An example project for how to use Spatie Ray in WordPress Development. | |
* Author: Tom McFarlin <tom@tommcfarlin.com> | |
* Version: 1.0.0 | |
*/ | |
namespace RayForWP; | |
defined('WPINC') || die; | |
require_once __DIR__ . '/vendor/autoload.php'; | |
add_filter( | |
'the_content', | |
/** | |
* Renders the content to the browser from the database. | |
* | |
* @param string $content The content coming from WordPress. | |
* | |
* @return string $content The processed content to be sent to the browser. | |
*/ | |
function (string $content): string { | |
if (!is_single()) { | |
return $content; | |
} | |
// TODO: More code to come... | |
return $content; | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function (string $content): string { | |
if (!is_single()) { | |
return $content; | |
} | |
ray(current_user_can('manage_options')); | |
return $content; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function (string $content): string { | |
if (!is_single()) { | |
return $content; | |
} | |
$user = wp_get_current_user(); | |
ray($user); | |
return $content; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function (string $content): string { | |
if (!is_single()) { | |
return $content; | |
} | |
$user = wp_get_current_user(); | |
ray($user); | |
ray( | |
get_user_meta($user->data->ID, 'show_admin_bar_front', true) | |
); | |
return $content; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function (string $content): string { | |
if (!is_single()) { | |
return $content; | |
} | |
$user = wp_get_current_user(); | |
// Removed for brevity. | |
$capabilities = []; | |
foreach ($user->allcaps as $key => $value) { | |
$capabilities[$key] = $value; | |
if (15 < count($capabilities)) { | |
break; | |
} | |
} | |
ray()->table($capabilities); | |
return $content; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
$capabilities = []; | |
foreach ($user->allcaps as $key => $value) { | |
$capabilities[$key] = $value; | |
if (15 < count($capabilities)) { | |
break; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Retrieves the first 15 capabilities from the specified user. | |
* | |
* @param WP_User $user The user from which to retrieve the capabilities. | |
* | |
* @return array $capabilities The array of the first 15 capabilities from the user. | |
*/ | |
function getUserCapabilities(WP_User $user): array | |
{ | |
$capabilities = []; | |
foreach ($user->allcaps as $key => $value) { | |
$capabilities[$key] = $value; | |
if (15 < count($capabilities)) { | |
break; | |
} | |
} | |
return $capabilities; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_filter( | |
'the_content', | |
/** | |
* Renders the content to the browser from the database. | |
* | |
* @param string $content The content coming from WordPress. | |
* | |
* @return string $content The processed content to be sent to the browser. | |
*/ | |
function (string $content): string { | |
// ... | |
ray()->table(getUserCapabilities($user)); | |
// ... | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Retrieves the first 15 capabilities from the specified user. | |
* | |
* @param WP_User $user The user from which to retrieve the capabilities. | |
* | |
* @return array $capabilities The array of the first 15 capabilities from the user. | |
*/ | |
function getUserCapabilities(WP_User $user): array | |
{ | |
ray()->caller(); | |
$capabilities = []; | |
foreach ($user->allcaps as $key => $value) { | |
$capabilities[$key] = $value; | |
if (15 < count($capabilities)) { | |
break; | |
} | |
} | |
return $capabilities; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_filter( | |
'the_content', | |
/** | |
* Renders the content to the browser from the database. | |
* | |
* @param string $content The content coming from WordPress. | |
* | |
* @return string $content The processed content to be sent to the browser. | |
*/ | |
function (string $content): string { | |
if (!is_single()) { | |
return $content; | |
} | |
$user = wp_get_current_user(); | |
ray($user); | |
ray()->table(getUserCapabilities($user)); | |
ray()->trace(); | |
return $content; | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function getUserCapabilities(WP_User $user): array | |
{ | |
$capabilities = []; | |
ray()->pause(); | |
foreach ($user->allcaps as $key => $value) { | |
$capabilities[$key] = $value; | |
if (15 < count($capabilities)) { | |
break; | |
} | |
} | |
return $capabilities; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function getUserCapabilities(WP_User $user): array | |
{ | |
$capabilities = []; | |
ray('Pausing execution...'); | |
ray()->caller(); | |
ray($user->data->ID); | |
ray($capabilities); | |
ray()->pause(); | |
foreach ($user->allcaps as $key => $value) { | |
$capabilities[$key] = $value; | |
if (15 < count($capabilities)) { | |
break; | |
} | |
} | |
return $capabilities; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Retrieves the first 100 results from the postmeta table. | |
* This function is used specifically for demonstration purposes | |
* of measuring performance. | |
* | |
* @param int $number The number of records to return. | |
* @param bool $measure Whether or not to meawsure the performance with Ray. | |
* | |
* @return array $results The array of results queried. | |
*/ | |
function getMetadataRecords(int $number, bool $measure): array | |
{ | |
global $wpdb; | |
if ($measure) { | |
ray()->measure(); | |
} | |
$results = $wpdb->get_results( | |
$wpdb->prepare( | |
" | |
SELECT * | |
FROM $wpdb->postmeta | |
LIMIT %d | |
", | |
$number, | |
), | |
ARRAY_A | |
); | |
if ($measure) { | |
ray()->measure(); | |
} | |
return $results; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action( | |
'plugins_loaded', function () { | |
$number = 1000; | |
ray("Testing $number records..."); | |
$records = getMetadataRecords($number, true); | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action( | |
'plugins_loaded', function () { | |
$number = 10; | |
ray("Testing $number records..."); | |
$records = getMetadataRecords($number, true); | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action( | |
'plugins_loaded', function () { | |
$number = 100; | |
ray("Testing $number records..."); | |
$records = getMetadataRecords($number, false); | |
if (true) { | |
ray()->measure()->green("Start foreach..."); | |
foreach ($records as $record) { | |
$record; | |
} | |
ray()->measure()->green("...Done."); | |
} else { | |
// ... | |
} | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action( | |
'plugins_loaded', function () { | |
$number = 1000; | |
ray("Testing $number records..."); | |
$records = getMetadataRecords($number, false); | |
if (true) { | |
ray()->measure()->green("Start foreach..."); | |
foreach ($records as $record) { | |
$record; | |
} | |
ray()->measure()->green("...Done."); | |
} else { | |
// ... | |
} | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action( | |
'plugins_loaded', function () { | |
$number = 100; | |
ray("Testing $number records..."); | |
$records = getMetadataRecords($number, false); | |
if (true) { | |
// ... | |
} else { | |
ray()->measure()->red("Start array_map..."); | |
array_map( | |
function ($record) { | |
$record; | |
}, $records | |
); | |
ray()->measure()->red("...Done."); | |
} | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action( | |
'plugins_loaded', function () { | |
$number = 1000; | |
ray("Testing $number records..."); | |
$records = getMetadataRecords($number, false); | |
if (true) { | |
// ... | |
} else { | |
ray()->measure()->red("Start array_map..."); | |
array_map( | |
function ($record) { | |
$record; | |
}, $records | |
); | |
ray()->measure()->red("...Done."); | |
} | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action( | |
'plugins_loaded', | |
function () { | |
// First, we want to see who called this function. | |
ray()->caller(); | |
ray()->separator(); | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
if ('done' === get_option('ray-for-wordpress', true)) { | |
return; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
update_option('ray-for-wordpress', 'done'); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action( | |
'plugins_loaded', | |
function () { | |
if ('done' === get_option('ray-for-wordpress', true)) { | |
return; | |
} | |
// First, we want to see who called this function. | |
ray()->caller(); | |
ray()->separator(); | |
update_option('ray-for-wordpress', 'done'); | |
} | |
); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Generates a set of random numbers up to the specified size. | |
* | |
* This uses PHP's `rand()` function to generate the numbers that | |
* are pushed into the array. | |
* | |
* @param mixed $min The lower bound of the random numbers. | |
* @param mixed $max The upper mount of the random numbers. | |
* @param mixed $size The total number of random numbers to generate | |
* | |
* @return array $numbers The array of randomly generatored numbers. | |
*/ | |
function generateNumbers(int $min, int $max, int $size): array | |
{ | |
$numbers = []; | |
for ($i = 0; $i < $size; $i++) { | |
$numbers[] = rand($min, $max); | |
} | |
return $numbers; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// ... | |
// Now let's populate an array with 10 elements. | |
$randomNumbers = generateNumbers(0, 100, 10); | |
ray($randomNumbers); | |
ray()->separator(); | |
// ... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// ... | |
// Now let's populate an array with 10 elements. | |
ray("Start with 10 numbers...")->measure(); | |
$randomNumbers = generateNumbers(0, 100, 10); | |
ray($randomNumbers); | |
ray("...Done")->measure(); | |
ray()->separator(); | |
// ... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// ... | |
ray()->table($randomNumbers); | |
// ... |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Measures the time is takes to generate random numbers based on | |
* an incoming array of predefined size. | |
* | |
* This function would be called like measureNumbers([10, 20, 30]). | |
* If any non-integers are passed, then the function would exit whenever | |
* that value was found. | |
* | |
* @param array $sizes The array of what size arrays to generate. | |
* | |
* @return void | |
*/ | |
function measureNumbers(array $sizes) | |
{ | |
array_map(function ($size) { | |
if (!is_int($size)) { | |
return; | |
} | |
ray()->measure(); // Start measuring. | |
$randomNumbers = generateNumbers(0, 500, $size); | |
ray()->measure(); // Render the "Time since last call..." | |
ray()->separator(); | |
}, $sizes); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Iterates through the specified array of numbers. | |
* | |
* @param array $numbers The array of numbers through which we'll iteratoe. | |
* | |
* @return void. | |
*/ | |
function iterateThroughArray(array $numbers) | |
{ | |
for ($i < 0; $i < count($numbers); $i++) { | |
$currentNumber = $numbers[$i]; | |
// More to come... | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Measures the time is takes to generate random numbers based on | |
* an incoming array of predefined size. | |
* | |
* This function would be called like measureNumbers([10, 20, 30]). | |
* If any non-integers are passed, then the function would exit whenever | |
* that value was found. | |
* | |
* @param array $sizes The array of what size arrays to generate. | |
* | |
* @return void | |
*/ | |
function measureNumbers(array $sizes) | |
{ | |
array_map(function ($size) { | |
if (!is_int($size)) { | |
return; | |
} | |
ray()->measure(); // Start measuring. | |
iterateThroughArray( | |
generateNumbers(0, 500, $size) | |
); | |
ray()->measure(); // Render the "Time since last call..." | |
ray()->separator(); | |
}, $sizes); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
function iterateThroughArray(array $numbers) | |
{ | |
ray($numbers); | |
ray()->pause(); | |
for ($i < 0; $i < count($numbers); $i++) { | |
$currentNumber = $numbers[$i]; | |
// More to come... | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// If the index is 10, pause execution. | |
if (10 === $i) { | |
ray("Pausing iterating at $i."); | |
ray()->pause(); | |
// TODO This is where you can set custom code to run! | |
ray('Now we are resuming...'); | |
ray(wp_get_current_user()); | |
// Set $i to the length of the array then hit continue. | |
$i = count($numbers); | |
ray("Now we've set the index to: $i."); // Print this into Ray for good measure | |
ray()->separator(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_action( | |
'shutdown', | |
function () { | |
ray('Deleting the ray-for-wordpress option since we are done.'); | |
delete_option('ray-for-wordpress'); | |
} | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment