Hi everyone,
I want to put a child page on “members” just like “fruits”.
Below is the code for that./* Specify default child page ==========================================*/ // This is the default page to connect to when the child page link is empty function redirect_default_child() { $url = explode( '/', $_SERVER["REQUEST_URI"] ); // fruits if( ( isset( $url[1]) && $url[1]=='fruits' ) && ( !isset($url[3]) || $url[3]==null ) ){ $redirect = get_home_url().'/fruits/'.$url[2].'/comments/'; wp_redirect( $redirect ); exit; } // members else if( ( isset($url[1]) && $url[1]=='members' ) && ( !isset($url[3]) || $url[3]==null ) ){ $redirect = get_home_url().'/members/'.$url[2].'/timeline/all/'; wp_redirect( $redirect ); exit; } } add_action( 'wp', 'redirect_default_child' ); /* Generate links to child pages ==========================================*/ // fruits has child pages and members has grandchild pages. function rewrite_init() { // fruits add_rewrite_rule( '^fruits/([^/]+)/(comments|participants)?$', 'index.php?fruits=$matches[1]&fruitschild=$matches[2]', 'top' ); // members add_rewrite_rule( '^members/([^/]+)/(profile|friends)?$', 'index.php?pagename=members&membersname=$matches[1]&memberschild=$matches[2]', 'top' ); add_rewrite_rule( '^members/([^/]+)/profile/(introduce|status)?$', 'index.php?pagename=members&membersname=$matches[1]&memberschild=profile&membersgrandchild=$matches[3]', 'top' ); add_rewrite_rule( '^members/([^/]+)/friends/(followees|followers)?$', 'index.php?pagename=members&membersname=$matches[1]&memberschild=friends&membersgrandchild=$matches[3]', 'top' ); } add_action( 'init', 'rewrite_init' ); function rewrite_query_vars_perf( $query_vars ) { // fruits $query_vars[] = 'fruitschild'; // members $query_vars[] = 'membersname'; $query_vars[] = 'memberschild'; $query_vars[] = 'membersgrandchild'; return $query_vars; } add_action( 'query_vars', 'rewrite_query_vars_perf' ); /* Specify a template for each page ==========================================*/ function rewrite_template_include_perf( $template ) { // fruits if( my_is_fruits() ) { $child = get_query_var( 'fruitschild' ); if( $child == 'comments' || $child == 'participants' ) { $template = locate_template( 'single_fruits1.php' ); } else{ $template = locate_template( 'single_fruits2.php' ); } } // members else if ( my_is_members() ) { $grandchild = get_query_var( 'membersgrandchild' ); if( $grandchild == 'introduce' || $grandchild == 'status' ){ $template = locate_template( 'page_members1.php' ); } else if( $grandchild == 'followees' || $grandchild == 'followers' ){ $template = locate_template( 'page_members2.php' ); } } return $template; } add_filter( 'template_include', 'rewrite_template_include_perf', 99 );
The “fruits” is normal, but the “members” will show “now 404!” if I write the following in header.php:
<head> <meta charset="<?php bloginfo( 'charset' ); ?>"> <meta name="viewport" content="width=device-width"> <?php wp_head(); ?> </head> <?PHP if( is_404() ) { echo 'now 404!'; } else{ echo 'ok'; } ?> <body <?php body_class(); ?>>
By the way, I don’t want to use bp-costom.php because I want to unify the processing with the “fruits” and “members”.
Where can I fix 404 in the above code?
Kind regards,
maimaimemainHi maimaimemain,
BuddyPress haas a complex url parsing routine( it will most probably be replaced in 5.0).My suggestion will be to use BuyddyPress’s api for adding the sub pages
Please see
https://codex.buddypress.org/developer/function-examples/core/bp_core_new_nav_item/and
https://codex.buddypress.org/developer/deprecated/bp_core_add_subnav_item/
Regards
BrajeshHi Brajesh,
You just said it!
But I want to unify the processing with the “fruits” and “members”.Since “fruits children” are added by
add_action ('init', 'rewrite_init');
, I want to do the same for “members children”.Regards
maimaimemainHi,
I am sorry . I regret my inability to help you with this due to lack of time and the scope of this work.If you strongly feel that you need this code, Please feel free to utilize our custom services(It costs $90/hour).
https://buddydev.com/buddypress-custom-development-service/
Regards
BrajeshOops!
Thank you for asking me, butI requested my senior for this work for $200.( ノД`)
I knew for the first time that I was able to request on this site.
I look forward to the next opportunity.Thanks
maimaimemainNo issues.
Time is the most important commodity. We are glad to provide free help here as long as it within certain limits.Otherwise, we suggest the custom service option.
Marking it resolved.
Regards
Brajesh
The topic ‘ [Resolved] When I set a child page on the members page, it becomes 404’ is closed to new replies.