将外部URL添加到WooCommerce我的帐户导航

时间:2017-06-12 作者:Marko Jezernik

我需要将自定义项目添加到WooCommerce我的帐户导航。我可以毫无问题地添加项目。由于它是指向用户配置文件的链接,因此我使用以下代码:

<?php
  global $switched;
  switch_to_blog(2);
?>
<a href=”<?php echo bp_loggedin_user_domain(); ?>”>Profile</a>
<?php restore_current_blog(); //switched back to main site ?>
首先,我切换到BuddyPress,它处理用户(多站点NewWork)。然后,我使用bp\\u loggedin\\u user\\u domain获取用户配置文件url。

但是链接的实际输出是不正确的,我得到:www.domain。com/my account/“www.subdomain.domain.com/members/profile/”

我知道我的帐户页面将所有链接都视为具有WooCommerce端点的子页面,但有没有办法在那里获取外部url?没有WooCommerce的默认域。com/我的帐户/前缀

2 个回复
最合适的回答,由SO网友:Marko Jezernik 整理而成

这就是我解决问题的方法:

我在域上有一个多站点网络。com上,还有BuddyPress,它处理BuddyPress上的用户配置文件。领域com。当用户注册时,这通常发生在域上。com,因为我们在那里有一家网店。所以我想添加BuddyPress个人资料链接到WooCommerce我的帐户导航。

当我添加它时:

<a href=”<?php echo bp_loggedin_user_domain(); ?>”>Profile</a>
我将在frontned www.domain中获得以下链接。com/“buddypress.domain.com/members/user”,而不是buddypress。领域com/成员/用户

我想这是因为WooCommerce处理我的账户页面的方式。基本上,它将该页面上的每个链接视为端点并插入域。com部件。它将其上的每个链接都视为子页面。

由于我的项目日程很紧,所以我改为:

<?php echo bp_core_get_userlink( bp_loggedin_user_id() ); ?>
正确显示用户名和配置文件链接。由于这是一个多站点,我将其与switch\\u to\\u blog()一起使用;

所以,如果有人需要在多站点网络上使用WooCommerce和BuddyPress,我希望这会有所帮助。

SO网友:totels

在这里做一个小假设。实际输出很可能如下所示:

<a href="www.subdomain.domin.com/members/profile">
  Profile
</a>
而不是:

<a href="www.domain.com/my-account/www.subdomain.domain.com/members/profile/">
  Profile
</a>
而您的浏览器实际上是在填充丢失的方案和路径。如果不使用绝对URI,浏览器将假定href是相对的(见图!)因此,如果您使用外部链接,您需要确保// 开始时(或https://, 或http:// 等等)。否则,浏览器将为您插入适当的相对路径,以防丢失/ 它将插入链接的当前完整路径,有效地提供:

<a href="http://www.domain.com/my-account/www.domain.com/members/profile/">
  Profile
</a>
在浏览器中使用view source(而不是dev tools)查看原始输出,而不是已解释的&;但要确保格式化输出。

结束

相关推荐

Multisite switch to blog

在我开始这个问题之前,我很抱歉,因为我在本地工作,所以我没有任何代码可以显示。我有一个Wordpress多站点,有3个站点-“site-1”、“site-2”、“site-3”。它们都导入相同的导航部分。php”,从模板文件夹。导航是硬编码的,但动态地从“site-2”中为site-2按钮提取内容在导航部分的开头。php“我获取当前博客id,然后切换到“site-2”。 $the_blog_id = get_current_blog_id(); switch_to_blog(2);&