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_buddyboss_profile_account_shortcode.php
Created April 11, 2024 20:17
Code and CSS to improve the appearance of the Membership tab of the BuddyBoss single profile.
/**
* Code and CSS to improve the appearance of the Membership tab of the BuddyBoss single profile.
*
* Place this CSS in the Appearance > Customize > Additional CSS field:
* #pmpro_account .pmpro_box { margin-bottom: 3em; }
* #pmpro_account .pmpro_box h2 { border-bottom: 1px solid var(--bb-content-border-color); margin: 30px 0; padding-bottom: 20px; }
*/
function my_pmpro_buddyboss_profile_account_shortcode( $content ) {
$content = '<div class="bp-profile-wrapper need-separator"><div class="bp-profile-content"><div class="group-separator-block">[pmpro_account sections="membership,invoices"]</div></div></div>';
return $content;
@kimcoleman
kimcoleman / example-sd-two-column-css.css
Created April 2, 2024 13:13
Sample CSS that gets you started with a two-column Student Dashboard layout
.llms-student-dashboard { align-items: flex-start; display: grid; grid-column-gap: 2em; grid-template-columns: 1fr 4fr; }
.llms-sd-header { display: flex; flex-direction: column-reverse; }
.llms-sd-title { display: none; }
.llms-sd-nav .llms-sd-items { display: flex; flex-direction: column; }
.llms-student-dashboard .llms-sd-item .llms-sep { display: none; }
@kimcoleman
kimcoleman / my_pmpro_modify_admin_activity_email_sections.php
Last active April 1, 2024 20:27
Customize a section of the Admin Activity Email
<?php
function my_pmpro_modify_admin_activity_email_sections($email_sections, $frequency, $term, $report_start_date, $report_end_date, $date_range) {
// Directly check and modify the 'total_members' section if it exists
if ( isset( $email_sections['total_members'] ) ) {
$email_sections['total_members'] = '<tr><td>Replace with your custom code to retrive total member data here.</td></tr>';
}
// Return the modified $email_sections array
return $email_sections;
}
@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 / 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 ) {