Skip to content

Instantly share code, notes, and snippets.

View kimcoleman's full-sized avatar

Kim Coleman kimcoleman

View GitHub Profile
@kimcoleman
kimcoleman / format_video_profile_field.php
Created October 28, 2024 20:45
Add a container to wrap a video oembed field and make it responsive.
<?php
/**
* Wrap the oembed video in a div so we can use custom CSS to make the video responsive inside the container.
* You must also add the following custom CSS to your site:
* .video-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; }
* .video-container iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
*/
function format_video_profile_field( $value, $original_value, $field_name ) {
// Return early if the field name is not 'video'
if ( 'video' !== $field_name ) {
@kimcoleman
kimcoleman / my_pmpro_kit_add_last_name_to_subscribe_fields.php
Created October 28, 2024 14:31
Send the custom field "last_name" to Kit.
<?php
function my_pmpro_kit_add_last_name_to_subscribe_fields( $subscribe_fields, $user_email ) {
// Get the user by email
$user = get_user_by( 'email', $user_email );
// If the user is found, add the last name to the fields
if ( $user ) {
$last_name = $user->last_name;
if ( $last_name ) {
$subscribe_fields['last_name'] = $last_name;
<?php
/**
* Add custom card classes to the Terms of Service (TOS) field in PMPro checkout.
*
* This function uses the 'pmpro_element_class' filter to add custom classes
* to the TOS fieldset, form fields, and other elements within the TOS area.
*
* @param array $class Array of element class names.
* @param string $element The element to return class names for.
*
@kimcoleman
kimcoleman / my_pmpro_template_url_parameter_at_checkout.php
Created October 8, 2024 13:19
Redirect away from checkout if the secret URL parameter is missing.
<?php
/**
* Redirect away from checkout if the secret URL parameter is missing.
*/
function my_pmpro_template_url_parameter_at_checkout() {
global $pmpro_pages;
// Return early if we are not on a PMPro page.
if ( empty( $pmpro_pages ) ) {
return;
@kimcoleman
kimcoleman / my_pmpro_remove_no_access_message_from_bbp_is_forum_archive.php
Created September 12, 2024 17:03
Remove the restricted messages shown on the /forums/ archive in BuddyBoss.
<?php
/**
* Remove the restricted messages shown on the /forums/ archive in BuddyBoss.
* BuddyBoss is running the /forums/ page content through the the_content filter, which detects protected forums within the loop.
*/
function my_pmpro_remove_no_access_message_from_bbp_is_forum_archive( $text ) {
// Check if we are on the homepage.
if ( function_exists( 'bbp_is_forum_archive' ) && bbp_is_forum_archive() ) {
// Return an empty string.
return '';
@kimcoleman
kimcoleman / my_pmpro_check_and_upgrade_level_on_login.php
Created August 9, 2024 20:11
UNTESTED: Check if a user is already at level 1. If they have been at that level for 30 days, upgrade them to level 2.
<?php
/**
* UNTESTED: Check if a user is already at level 1. If they have been at that level for 30 days, upgrade them to level 2.
*
* You can add this recipe to your site by creating a custom plugin
* or using the Code Snippets plugin available for free in the WordPress repository.
* Read this companion article for step-by-step directions on either method.
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
*/
function my_pmpro_check_and_upgrade_level_on_login( $user_login, $user ) {
@kimcoleman
kimcoleman / my_custom_pmpro_stripe_card_element_style.php
Created July 31, 2024 13:48
Upcoming filter in PMPro v 3.1.2 or higher (not currently released) to adjust the appearance of Stripe Card Element styles.
<?php
/**
* Upcoming filter in PMPro v 3.1.2 or higher (not currently released) to adjust the appearance of Stripe Card Element styles.
* Refer to this Stripe documentation for available properties: https://docs.stripe.com/js/appendix/style
*/
function my_custom_pmpro_stripe_card_element_style($styles) {
$custom_styles = array(
'base' => array(
'color' => '#FFFFFF',
'::placeholder' => array(
@kimcoleman
kimcoleman / my_pmpro_element_class_an2c.php
Created July 30, 2024 18:13
Show the First and Last Name fields in a single column
<?php
/**
* Show the First and Last Name fields in a single column
*
* You can add this recipe to your site by creating a custom plugin
* or using the Code Snippets plugin available for free in the WordPress repository.
* Read this companion article for step-by-step directions on either method.
* https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
*
*/
@kimcoleman
kimcoleman / pmpro_lifter_llms_plan_get_checkout_url.php
Created July 26, 2024 19:20
Some logic to set up free access plans that require PMPro membership level to enroll in.
/**
* Require a specific membership level IDs to enroll in free access plans.
*/
function my_pmpro_llms_access_plan_is_available_to_user( $access, $user_id, $access_plan ) {
// Bail if streamline is not enabled.
if ( ! get_option( 'pmpro_lifter_streamline' ) ) {
return $access;
}
// If the plan isn't free, let LifterLMS handle it.
@kimcoleman
kimcoleman / my_pmpro_enqueue_theme_frontend_css.php
Last active January 2, 2025 16:34
Legacy code to enqueue a theme or child theme's version of frontend.css for PMPro v3.1+.
<?php
/**
* Enqueue your theme or child theme's version of the legacy frontend.css file.
* Note: PMPro v3.1+ css selectors have been overhauled and many of the legacy class names are no longer supported.
*/
function my_pmpro_enqueue_theme_frontend_css() {
if ( is_admin() ) {
return;
}