Skip to content

Instantly share code, notes, and snippets.

@rickalday
rickalday / give_middle_name_field.php
Created September 3, 2026 00:02
Add a middle name field to a GiveWP donation form
<?php
use Give\Framework\FieldsAPI\Text;
use Give\Framework\FieldsAPI\Checkbox;
add_action('givewp_donation_form_schema', function($form, $formId) {
//Middle name field
$middlename = Text::make('middlename')
->showInReceipt()
->required()
->storeAsDonorMeta()
@rickalday
rickalday / my_safe_give_donor_wall_shortcode.php
Created September 2, 2026 18:15
Fix donor wall shortcode
<?php
add_action( 'init', function () {
remove_shortcode( 'give_donor_wall' );
add_shortcode( 'give_donor_wall', 'my_safe_give_donor_wall_shortcode' );
}, 100 );
function my_safe_give_donor_wall_shortcode( $atts = [] ) {
$atts = shortcode_atts(
[
'donors_per_page' => 12,
@rickalday
rickalday / ldn-wpml-language-filter.php
Created August 31, 2026 17:07
Prevent LearnDash Notifications from matching notifications created for a different WPML language translation of the same course.
<?php
add_filter( 'learndash_notifications_are_triggering_objects_valid', 'ldn_require_same_wpml_language_after_compat', 9999, 4 );
function ldn_require_same_wpml_language_after_compat( $valid, $trigger, $notification, $args ) {
// Only act when the notification was already considered valid.
if ( ! $valid ) {
return $valid;
}
if ( ! is_object( $notification ) || ! is_array( $args ) ) {
return $valid;
@rickalday
rickalday / give_time_email_tag.php
Created August 18, 2026 21:26
GiveWP time email tag
<?php
function give_time_email_tag( $email_tags ) {
// Adds an email tag called {time} to output the donation time.
$email_tags[] = array(
'tag' => 'time', // The tag name.
'desc' => __( 'This outputs the donation time', 'give' ), // For admins.
'func' => 'render_time_email_tag', // Callback to function below.
'context' => 'donation',
);
@rickalday
rickalday / free_custom_export_users.php
Created June 29, 2026 19:54
Export WP Users with custom fields
<?php
function free_custom_export_users() {
if ( isset( $_GET['export_my_users'] ) && current_user_can( 'manage_options' ) ) {
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=users_export.csv');
$output = fopen('php://output', 'w');
// Define your column headers here (Add your custom field names)
@rickalday
rickalday / custom_address_fields.php
Last active July 2, 2026 19:50
Custom Address Fields with conditional display
<?php
use Give\Framework\FieldsAPI\Text;
add_action('givewp_donation_form_schema', function($form, $formId) {
//Country field
$country = Text::make('country')
->showInReceipt()
->receiptLabel(__('Country', 'give-tributes'))
->label(__('Country', 'give-tributes'))
@rickalday
rickalday / give_export_get_data_donors.php
Created March 25, 2026 20:47
Fix donor export for donors with multiple mailing addresses
<?php
add_filter('give_export_get_data_donors', function($exportData) {
global $wpdb;
/**
* Map of output column names to their meta key prefixes
*/
$addressFields = [
'address_line1' => '_give_donor_address_billing_line1',
@rickalday
rickalday / add_fund_title_id_donations_endpoint.php
Last active March 5, 2026 19:52
Add fund title and ID to Donations endpoint
<?php
add_filter( 'give_api_donations_endpoint', function( $donations ) {
// Check if donations array has the expected structure
if ( ! isset( $donations['donations'] ) || ! is_array( $donations['donations'] ) ) {
return $donations;
}
// Loop through each donation and add the fund title
foreach ( $donations['donations'] as $key => &$donation ) {
<?php
namespace GiveGoCardless\Actions;
use Give\Donations\Models\Donation;
use Give\Framework\PaymentGateways\Exceptions\PaymentGatewayException;
use GiveGoCardless\DataTransferObjects\GoCardlessPayment;
use GiveGoCardless\Helpers\GoCardlessResources;
/**
@rickalday
rickalday / get_amount_from_url.php
Created February 19, 2026 21:34
Get amount from url (anchor link fix)
<?php
add_action('givewp_donation_form_schema', function($form) {
/** @var \Give\Framework\FieldsAPI\Amount $field */
$field = $form->getNodeByName('amount');
if (!$field) {
return;
}