-
-
Save nikolov-tmw/8d803ea9b4adfbd7e221 to your computer and use it in GitHub Desktop.
Sample member pages plugin
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: Test Plugin | |
*/ | |
function analytics_rewrite_add_var( $vars ) { | |
$vars[] = 'member'; | |
return $vars; | |
} | |
add_filter( 'query_vars', 'analytics_rewrite_add_var' ); | |
function add_analytic_rewrite_rule(){ | |
add_rewrite_tag( '%member%', '([^&]+)' ); | |
add_rewrite_rule( | |
'^member/([^/]*)/?', | |
'index.php?member=$matches[1]', | |
'top' | |
); | |
} | |
add_action( 'init', 'add_analytic_rewrite_rule' ); | |
function my_parse_request( $wp ) { | |
if ( ! is_admin() ) { | |
if ( isset( $wp->query_vars['member'] ) && $wp->query_vars['member'] ) { | |
$member = get_user_by( 'login', $wp->query_vars['member'] ); | |
if ( false !== $member ) { | |
global $_current_member; | |
$_current_member = $member; | |
$wp->query_vars['page_id'] = get_my_page_id(); | |
add_filter( 'the_title', 'my_title_filter', 0, 2 ); | |
add_filter( 'single_post_title', 'my_title_filter', 0, 2 ); | |
add_filter( 'the_content', 'my_content_filter', 0, 2 ); | |
} else { | |
// Set a 404 error | |
$wp->query_vars['error'] = '404'; | |
} | |
} | |
} | |
} | |
add_filter( 'parse_request', 'my_parse_request', 10 ); | |
function my_title_filter( $title, $id = false ) { | |
global $_current_member; | |
$id = is_object( $id ) ? $id->ID : $id; | |
if ( $id == get_my_page_id() && isset( $_current_member ) ) { | |
$search = array( | |
'%FNAME%', | |
'%LNAME%', | |
'%DNAME%', | |
'%UNAME%', | |
'%UID%', | |
); | |
$replace = array( | |
$_current_member->first_name, | |
$_current_member->last_name, | |
$_current_member->display_name, | |
$_current_member->user_login, | |
$_current_member->ID, | |
); | |
// Allow the user to define some placeholders in the page title | |
// That will be replaced with the correct data for the displayed user | |
return str_replace( $search, $replace, $title ); | |
} | |
return $title; | |
} | |
function my_content_filter( $content, $id = false ) { | |
global $_current_member; | |
if ( ( $id == get_my_page_id() || get_the_ID() == get_my_page_id() ) && isset( $_current_member ) ) { | |
ob_start(); | |
include_once( 'member.php' ); | |
return apply_filters( 'my_plugin_member_output', ob_get_clean(), $_current_member ); | |
} | |
return $content; | |
} | |
function get_my_page_id() { | |
// Cache the ID | |
static $page_id; | |
if ( isset( $page_id ) ) { | |
return $page_id; | |
} | |
// Change this to $page_id = get_option( 'my_profile_page_id' ); | |
$page_id = 2; | |
return $page_id; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment