Skip to content

Instantly share code, notes, and snippets.

View kimcoleman's full-sized avatar

Kim Coleman kimcoleman

View GitHub Profile
@kimcoleman
kimcoleman / blank_frontend.css
Last active March 26, 2024 18:44
Sample file for theme developers include the CSS classes for most frontend Paid Memberships Pro elements.
/*---------------------------------------
Buttons
---------------------------------------*/
.pmpro_btn {}
.pmpro_content_message a {}
.pmpro_btn.disabled {}
.pmpro_btn.pmpro_btn-cancel {}
.pmpro_btn.pmpro_btn-submit-checkout {}
input[type="button"]#discount_code_button {}
input[type="button"]#other_discount_code_button {}
@kimcoleman
kimcoleman / update_contact_tags_on_category_view.php
Last active February 27, 2024 21:22
Add tags to contacts in FluentCRM when viewing a post in a specific category.
<?php
// Add tags to contacts when viewing a post in a specific category.
function update_contact_tags_on_post_view() {
// Return if they aren't logged in.
if ( ! is_user_logged_in() ) {
return;
}
// Return if the FluentCrmApi is not available.
if ( ! function_exists( 'FluentCrmApi' ) ) {
@kimcoleman
kimcoleman / optional-pmpro-3-0-database-updates.php
Last active February 19, 2024 18:58
Optional database updates to drop orphaned orders table columns and unused usermeta rows.
<?php
/**
* Optional database updates to drop orphaned orders table columns and unused usermeta rows.
*/
function run_optional_pmpro_upgrade_3_0() {
global $wpdb;
// PMPro Stripe Billing Limits Add On has been merged into core and no longer needs `pmpro_stripe_billing_limit` user meta.
$sqlQuery = "
DELETE FROM {$wpdb->usermeta}
@kimcoleman
kimcoleman / pmpro_upgrade_3_0_rerun.php
Created February 19, 2024 15:54
Re-run the PMPro v3.0 upgrade script.
<?php
/**
* Re-runs the 3.0 upgrade script.
*/
function pmpro_upgrade_3_0_rerun() {
global $wpdb;
// Create a subscription for each unique `subscription_transaction_id` in the orders table.
$sqlQuery = "
INSERT IGNORE INTO {$wpdb->pmpro_subscriptions} ( user_id, membership_level_id, gateway, gateway_environment, subscription_transaction_id, status )
@kimcoleman
kimcoleman / my_memberlite_remove_banner_on_events_archive.php
Last active February 17, 2024 12:07
Remove the Memberlite Banner from the category archive for The Events Calendar events.
<?php
/**
* Remove the Memberlite Banner from the category archive for The Events Calendar events.
*/
function my_memberlite_remove_banner_on_events_archive( $show ) {
// Let's not do this if it is not the homepage
$show = is_post_type_archive( array( 'tribe_events' ) ) ? false : true;
return $show;
}
add_filter( 'memberlite_banner_show', 'my_memberlite_remove_banner_on_events_archive', 15 );
@kimcoleman
kimcoleman / memberlite_modify_columns_ratio_for_blog.php
Created January 31, 2024 13:00
Add a sidebar to the Memberlite blog and archives pages when using the grid-style post layout.
<?php
function memberlite_modify_columns_ratio_for_blog( $r, $location ) {
// Check if the current page is a blog page
$maybe_add_sidebar = memberlite_is_blog();
if ( $maybe_add_sidebar && ! in_array( $location, array( 'header-right', 'header-left' ) ) ) {
// Set layout ratio for the blog main area and sidebar
$r = ( $location == 'sidebar' ) ? '4' : '8';
}
@kimcoleman
kimcoleman / my_custom_memberlite_woocommerce_hooks.php
Created January 31, 2024 12:58
Add a sidebar to the entire WooCommerce shop and product pages using the Memberlite theme.
<?php
function my_custom_memberlite_woocommerce_hooks() {
// Remove Memberlite hooks
remove_action( 'woocommerce_before_main_content', 'memberlite_woocommerce_before_main_content', 10 );
remove_action( 'woocommerce_after_main_content', 'memberlite_woocommerce_after_main_content', 10 );
// Add custom WooCommerce hooks
add_action( 'woocommerce_before_main_content', 'my_custom_memberlite_woocommerce_before_main_content', 10 );
add_action( 'woocommerce_after_main_content', 'my_custom_memberlite_woocommerce_after_main_content', 10 );
@kimcoleman
kimcoleman / pmpro_add_google_tag_manager_to_head.php
Last active January 3, 2024 16:12
Builds the dataLayer and loads GTM tracking in the head. Includes Custom Dimensions and Ecommerce data for Paid Memberships Pro.
<?php
/**
* Builds the dataLayer and loads GTM tracking in the head.
* Includes Custom Dimensions and Ecommerce data.
*
*/
function pmpro_add_google_tag_manager_to_head() {
global $pmpro_pages;
// Don't track admins.
@kimcoleman
kimcoleman / my_pmpro_member_directory_sql_search_where_username_display_name_only.php
Last active December 21, 2023 20:36
Only search the PMPro Member Directory for matching usernames or display names.
<?php
/**
* Only search the PMPro Member Directory for matching usernames or display names.
*
* 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_member_directory_sql_search_where_username_display_name_only( $sql_search_where, $s ) {
@kimcoleman
kimcoleman / pmpro_show_spots_available.php
Last active December 12, 2023 17:16 — forked from andrewlimaza/pmpro_show_spots_available.php
Show number of spots available for a membership level Paid Memberships Pro.
<?php
/**
* This will show '0/X spots available.' on membership level if a limit is set from (https://www.paidmembershipspro.com/limit-number-members-membership-level/)
* Add this code to your PMPro Customizations Plugin - https://www.paidmembershipspro.com/create-a-plugin-for-pmpro-customizations/
* For help, post a support thread on www.paidmembershipspro.com
*/
function pmpro_show_spots_available( $expiration_text, $level ) {
global $wpdb;