Skip to content

Instantly share code, notes, and snippets.

View kimcoleman's full-sized avatar

Kim Coleman kimcoleman

View GitHub Profile
@kimcoleman
kimcoleman / my_pmpro_set_submission_limit_by_level.php
Last active November 12, 2024 17:36
Set the submission limit of a WS Form based on the logged-in member's Membership Level.
<?php
/**
* Check how many posts a member has submitted to a specific form on page ID '48'.
* Hide the form if they have reached the submission limit for their Membership Level.
*/
function my_pmpro_submission_limit_hide_ws_form( $content ) {
// Return early if PMPro is not active or the user is not logged in.
if ( ! function_exists( 'pmpro_has_membership_access' ) || ! is_user_logged_in() ) {
return $content;
}
@kimcoleman
kimcoleman / my_pmpro_courses_lesson_nav.php
Last active October 31, 2024 13:06
Display navigation to next/previous lesson within a single course with Paid Memberships Pro and the PMPro Courses Add On
<?php
/**
* Display navigation to next/previous lesson within a single course.
*/
function my_pmpro_courses_lesson_nav( $course_id ) {
global $post;
// Fetch all lessons associated with the course in the correct order.
$lessons = pmpro_courses_get_lessons( $course_id );
@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/
*
*/