我正在使用Buddypress和一个名为Teambooking的插件。 Teambooking插件并不知道Buddypress的存在,它使用默认的Wordpress作者查询字符串(/?author =" id",其中id是用户ID号)来创建和显示链接到作者的页面。 但Buddypress为用户提供了个人资料页面。 因此,当有人点击标准作者页面链接(/?author =" id")并将页面重定向到Buddypress用户个人资料页面时,我希望能够捕获。我以为我可以使用钩子'模板重定向'捕获此事件,但这不起作用,因为挂钩只在加载目标页面时被触发,而且正在发生的事情是Wordpress会自动重定向具有/?作者的URL =" ID"查询字符串到index.php页面,因为没有author.php页面。
我不能使用$ _SERVER [" QUERY_STRING"]来解析URL,因为正如我所说,Wordpress会自动重定向到index.php,删除查询字符串。
我也在想我可以创建一个author.php页面,以便WordPress停止重定向到index.php,然后使用' template_redirect' hook将author.php重定向到buddypress配置文件页面,但这也没有用。我在我的主题目录上创建了author.php,但Wordpress继续重定向到index.php。
关于如何从/?author =" id"进行此重定向的任何想法查询用户的正确的buddypress个人资料页面?
这种情况必须始终发生在不知道正在安装Buddypress的插件上。
感谢
-Malena
答案 0 :(得分:1)
事实证明,Yoast SEO插件的免费版本是自动将作者页面(?author = id)的查询重定向到index.php,我也不知道。所以我不得不停用Yoast SEO插件,然后使用is_author()来检测何时在模板重定向挂钩内请求作者存档页面(?author = id查询URL中的字符串)以便将调用重定向到相应的BuddyPress用户个人资料。这是我在functions.php中使用的代码,它执行重定向:
Products
Product ID | Quantity
OrdersLines
Product ID | Amount (multiple lines with same ID)
答案 1 :(得分:0)
Buddypress没有使用默认的永久链接结构,因此它可能不是您正在寻找的作者ID。如果您的永久链接结构设置为帖子名称,那么这将有效。
/* Redirect author page to buddypress page */
function my_page_template_redirect()
{
if( is_author() )
{
global $wp_query;
$user = get_user_by( 'slug', $wp_query->query['author_name'] );
$url = bp_core_get_user_domain($user->ID);
wp_redirect( $url );
exit();
}
}
add_action( 'template_redirect', 'my_page_template_redirect' );