Wordpress 我怎样才能设置一个";“移动深度链接”;从woocommerce下载文件?

Wordpress 我怎样才能设置一个";“移动深度链接”;从woocommerce下载文件?,wordpress,woocommerce,uri,deep-linking,Wordpress,Woocommerce,Uri,Deep Linking,我在WoodPress网站上安装了woocommerce,用于下载PDF文件。在用户完成签出过程并准备下载文件后,我想检查他们是否在移动设备上。如果用户不在移动设备上,下载链接就正常了 如果用户在移动设备上,我希望使用自定义URI方案(来自现有供应商)将下载链接设置为“应用程序深度链接”。例如,我希望下载链接为http://或https://,而不是引用http://的下载链接appname://domain.com/folder/filename.pdf。这样,当他们点击链接时,PDF会自动在

我在WoodPress网站上安装了woocommerce,用于下载PDF文件。在用户完成签出过程并准备下载文件后,我想检查他们是否在移动设备上。如果用户不在移动设备上,下载链接就正常了

如果用户在移动设备上,我希望使用自定义URI方案(来自现有供应商)将下载链接设置为“应用程序深度链接”。例如,我希望下载链接为
http://
https://
,而不是引用
http://
的下载链接appname://domain.com/folder/filename.pdf。这样,当他们点击链接时,PDF会自动在我的应用程序中打开。应用程序供应商已经支持自定义URI模式,所以我只是想了解如何在WordPress/Woocommerce中动态设置链接

我将如何着手:

  • 检测用户是否在移动设备上,以及
  • 如果他们是移动用户,是否更改URI方案
  • “本机应用程序”示例中描述了我试图实现的概念:


    这里:

    对于第一个问题,请尝试使用javascript
    window.navigator.userAgent
    或使用PHP尝试使用
    $\u服务器['HTTP\u USER\u AGENT']
    。这应该独立于Wordpress或其他网站细节。请参阅相关问题和


    关于你的第二个问题,深度链接用于个人移动应用,对吗?答案可能取决于你的目标应用。如果它是一个现有的应用程序,你可能会得到最好的牵引联系应用程序开发人员。如果您正在编写一个新的应用程序,则会有和的信息。如果您想要一个永久链接URL,该URL引用Wordpress页面上的特定内容(如特定事务事件和用户名),那么您可以使用Wordpress查找有关永久链接的信息和查询字符串

    首先,要查看您是否在移动平台上,WP有一个功能:
    WP\u is\u mobile
    (请参阅)

    然后,如果查看
    类wc download handler.php
    文件()的源代码,第177行是
    下载($file\u path,$product\u id)
    函数。这在第188行使用
    apply\u过滤器('woocommerce\u file\u download\u filename',$filename,$product\u id)
    生成下载路径,因此,理论上,您应该能够连接到该路径,并使用正则表达式用深度链接uri替换
    http


    希望这有助于在任何类型的下载方法之前运行以下代码,检查它是否是移动的,并将下载URL中的
    http
    https
    替换为
    appname
    ,最后重定向到新的URL。在这种情况下,最终URL应该如下所示:

    appname://domain.com/folder/filename.pdf

    将以下代码复制到
    functions.php

    add_action('woocommerce_download_file_redirect','change_download_link_on_mobile',1,2);
    添加操作(“woocommerce”下载文件“xsendfile”,“在移动设备上更改下载链接”,1,2);
    添加操作('woocommerce\u download\u file\u force'、'change\u download\u link\u on\u mobile',1、2);
    函数更改\u下载\u链接\u在移动设备上($file\u path,$filename=''){
    如果(wp_是移动的()){
    $file_path=preg_replace('/http | https/','appname',$file_path);//用appname替换http | https
    标题('Location:'.$file_path);
    退出();
    }
    }
    
    我正在使用一家供应商提供的现有应用程序,该应用程序已经支持深度链接模式,因此我将为您提供识别移动用户和动态设置链接的建议。谢谢。谢谢,我一定会读更多关于这两个选项的内容。没有你的应用的手机用户呢?我建议修改应用程序,这样它就可以声明您的
    https://example.com/folder
    下载链接,而不是使用自定义URI方案。这在iOS和Android上都应该是可能的。这是一个很好的观点,但在我的特殊情况下,QR码为用户将PDF上传到地图应用程序提供了一种方便的方式。您能给出一些解释吗?此码在任何类型的下载方法之前运行,并检查是否是移动的,然后将下载url中的“http”或“https”替换为“appname”,最后将用户重定向到新url。在您的情况下,最终url应该是这样的:appname://domain.com/folder/filename.pdf@MahdiAkrami,这段代码看起来很接近,但对于在移动设备上下载来说不太有效。无论是从笔记本电脑下载,还是在移动浏览器处于“桌面模式”时,它都可以正常工作。我尝试将
    appname
    设置为
    http
    来测试移动链接,但也没有成功。经过进一步研究,regex语法无法正常工作。我已经用替换多个字符串的有效语法更新了代码段。非常感谢。