【问题标题】:make external links dynamic in WordPress在 WordPress 中使外部链接动态化
【发布时间】:2016-07-01 14:23:59
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php wordpress


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      您可以在子主题的“functions.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' );
      

      【讨论】:

      • 但在这种情况下仍然需要手动更改。我一直在寻找一种方式,让博客的最终用户不必关心它。
      • 如果外部网站从 www.example.com 更改为 dev.example.com,那么您的网站就无法意识到这一点。除非外部网站将您重定向到正确的 URL,否则该链接将被破坏。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 2015-01-18
      相关资源
      最近更新 更多