使外部链接在WordPress中动态化


make external links dynamic in WordPress

有没有办法在WordPress的导航菜单中使外部(自定义)链接动态?

我的意思是,如果外部网站的 URL 或子域发生变化,使用自定义链接添加到菜单中的外部网站链接将继续工作。例如,位于 www.myblog.com 的WordPress网站将在导航菜单中有一个自定义链接,该链接指向 www.externalsite.com/link1

通常,您当然会添加整个URL。但是有没有办法只添加/link1 并且 WordPress 会添加所有内容?这样,如果 www.externalsite.com 更改为 dev.externalsite.com,则不需要手动更改链接?

我想可能有一种方法可以使用$_SERVER['HTTP_HOST']但我不知道在哪里做(可能是头文件或函数文件)以及如何去做。

你问的是不可能的。如果指向外部站点的链接发生更改,则必须手动将其更新为新 URL。

您无法自动更新它,除非您让外部网站告诉您它移动到的位置。但这意味着创建一个 API 并允许外部站点远程更新其在站点上的位置。不理想,因为它可能允许某人向您的网站添加恶意 URL。

您可以在子主题的"函数.php中添加以下内容。这将为菜单中存在的所有动态链接设置外部网站。您可以替换代码中的 URL,以防它发生更改。

function custom_url_nav_menu_link_attributes( $atts ) {
    // Set URL 
    $url = 'http://example.com';
    // Prepend URL on all dynamic links
    if ( strpos( $atts['href'], 'http' ) === false ) {
        $atts['href'] = $url . $atts['href'];
    }
    return $atts;
}
add_filter( 'nav_menu_link_attributes', 'custom_url_nav_menu_link_attributes' );