如何设置“移动深层链接”以从 woocommerce 下载文件?

Rya*_*ton 5 wordpress uri deep-linking woocommerce

我在 WordPress 网站上设置了 woocommerce,用于下载 PDF 文件。用户完成结账流程并准备好下载文件后,我想检查他们是否在移动设备上。如果用户不在移动设备上,下载链接将是正常的。

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

我该怎么办:

  1. 检测用户是否在移动设备上,以及
  2. 如果他们是移动用户,是否需要更改 URI 方案?

我试图实现的概念在“本机应用程序”示例中进行了描述:http://www.mobiloitte.com/blog/deep-linking-101

在这里: https: //en.wikipedia.org/wiki/Mobile_deep_linking

小智 3

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

应用程序名称://domain.com/folder/filename.pdf

将以下代码复制到functions.php

add_action( 'woocommerce_download_file_redirect', 'change_download_link_on_mobile' , 1, 2 );
add_action( 'woocommerce_download_file_xsendfile', 'change_download_link_on_mobile', 1, 2 );
add_action( 'woocommerce_download_file_force', 'change_download_link_on_mobile' , 1, 2 );

function change_download_link_on_mobile( $file_path, $filename = '' ){
    if( wp_is_mobile () ){
        $file_path  = preg_replace( '/http|https/','appname', $file_path ); // Replace http|https with appname 
        header( 'Location: ' . $file_path );
        exit();
    }
}
Run Code Online (Sandbox Code Playgroud)