在 woocommerce 中创建带有音频文件的可下载产品

2024-07-01

相信你的一天过得很充实。我需要从前端创建一个可下载的 woocommerce 产品。我已经能够创建链接来发布产品并将音频文件添加为附件,但我需要在付款后使此附件可下载,就像您从仪表板发布可下载的 woocommerce 产品时一样。我已经可以在仪表板中看到我的产品,但我必须手动检查可下载并从仪表板添加文件。我需要有关如何使从前端发布的产品可自动下载的帮助。 一直以来感谢你们。 下面是我的代码片段。

// ADD THE FORM INPUT TO $new_post ARRAY
    $new_post = array(
    'post_title'    =>   $title,
    'post_content'  =>   $description,
    'post_category' =>   array($_POST['cat']),  
    'tags_input'    =>   array($tags),
    'post_status'   =>   'draft',          
    'post_type' =>   'product',  //'post',page' or use a custom post type if you want to
    'rating'    =>   $myrating
    );

//SAVE THE POST
$pid = wp_insert_post($new_post);

         //KEEPS OUR COMMA SEPARATED TAGS AS INDIVIDUAL
wp_set_post_tags($pid, $_POST['post_tags']);

//REDIRECT TO THE NEW POST ON SAVE
$link = get_permalink( $pid );
wp_redirect( $link );

//ADD OUR CUSTOM FIELDS
add_post_meta($pid, 'rating', $myrating, true);

//INSERT OUR MEDIA ATTACHMENTS
if ($_FILES) {
    foreach ($_FILES as $file => $array) {
    $newupload = insert_attachment($file,$pid);
    // $newupload returns the attachment id of the file that

    }

} // END THE IF STATEMENT FOR FILES

你应该做的是,在你的functions.php中添加这段代码。

function user_downloads($order_id) {
// Variables to change
$download_file_id = CUSTOM_ID_OR_ATTACHMENT_ID_OF_FILE;
$user_id = USER_ID;
$product_id = PRODUCT_ID;


  $order = new WC_Order( $order_id );
  if($order['product_id'] == $product_id ){

    $user_downloads = get_user_meta($user_id, 'user_downloads', TRUE);
    if(!empty($user_downloads)){
        $user_downloads = $user_downloads.','.$download_file_id;
        update_user_meta($user_id, 'user_downloads', $user_downloads );
    }else{
        update_user_meta($user_id, 'user_downloads', $user_downloads );
    }
  }
}
add_action( 'woocommerce_order_status_completed', 'user_downloads' );

该代码将连接到 woocommerce,当订单完成时,它将创建一个新的用户元数据。因此,每个为指定产品付款的用户都会有一个名为“user_downloads”的新元项目。该项目的值将是附件 id 或某些加密 id 的逗号分隔值。现在您在模板页面中要做的就是

$user_downloads = get_user_meta($user_id, 'user_downloads', TRUE);
$user_downloads = explode(',',$user_downloads);

foreach($user_downloads as $user_download){
   echo '<a href="'.wp_get_attachment_url( $user_downloads[$user_download] ).'">Downloadable File</a>';
}

这样他们就可以购买任意数量的产品,并且所有这些项目都将堆积在他们的用户个人资料中,他们可以从那里下载它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 woocommerce 中创建带有音频文件的可下载产品 的相关文章

  • 在 Apache 虚拟主机之间传输会话数据

    如何将 PHP 会话数据从一个 Apache 虚拟主机传递到另一台 我当前正在运行 Apache 2 2 17 和 PHP 5 3 3 并且我已经设置了一台主机来管理单点登录应用程序 我需要将其传递给运行单独应用程序的另外两台虚拟主机 这是
  • WebSocket 已处于 CLOSING 或 CLOSED 状态。

    我尝试使用 Javascript PHP 和 Wamp 执行 WebSocket 但在发送时出现错误 WebSocket 已处于 CLOSING 或 CLOSED 状态 我已经使用了源代码here http sii rennes devel
  • 如何对 array_chunk 中的元素进行分组

    我在 joomla 中创建模块时遇到问题 我的 php 技能受到限制 我使用 foreach 显示模板文件中的元素 div show information gt gt 我如何使用 array chunk 将 3 个元素分组到一个 div
  • 我想在我的 Wordpress BootStrap 导航中添加一行

    我有一个简单的网站 我想在导航上方添加一行 其中包含电话号码 也许还有一些社交链接 我的主题名为 Hestia Pro 找不到在哪里添加此额外行 我正在寻找一些关于将其添加到网站主题中的位置的指示 网站是 www gpoint co uk
  • 如何在另一个 php 脚本的后台运行 php 脚本(如更新按钮)

    当我按下 更新 按钮时 我将如何运行一个 php 脚本 然后它将运行脚本 x1 php 没有回显或其他输出 成功或失败 然后更新当前页面 我知道更新部分可以使用 ajax 完成 但我不确定如何以及如何让 x1 php 脚本在后台运行并在完成
  • 我可以在 javascript 中使用 php 吗?

    初学者的问题 我可以在 JavaScript 中使用 PHP 吗 例如在 jquery 中 triggers eq 1 post PHP 在服务器端执行 JavaScript 在客户端执行 但是你可以像这样打印 PHP 变量 trigger
  • 有没有办法在 PHP 中创建匿名对象

    我可以开始使用如下代码吗 new Controllers ServiceController gt fbdump 所以我不必创建一个 var 来执行单个方法 是的 但是您需要添加一组括号 因为 gt 优先级高于new new Control
  • 将静态站点生成器与 php 集成

    我目前正在使用 php 构建一个不需要定期更新的网站 并且我考虑使用静态站点生成器 因为它将具有类似博客的功能 然而 我的网站包含一个将与数据库链接的表单 我遇到的问题是静态站点生成器无法识别和解析 php 我目前正在考虑使用三个静态站点生
  • 文件上传:完成百分比进度条

    我正在尝试为头像上传添加 到目前为止完成的百分比 进度条巴迪出版社 https github com buddypress BuddyPress 目的是阻止用户在上传完成之前离开页面 上传过程由 BuddyPress 处理bp core a
  • php脚本在某个页面停留几秒钟并重定向

    有没有办法让页面在 php 中显示几秒钟并重定向到另一个页面 元重定向可能是您想要的 但是您CAN在 PHP 中也执行此操作 如下所示 其中 10 是等待的秒数
  • PHP:创建边缘光滑的圆圈、图像或字体?

    我正在制作一个 PHP 图像脚本 它将在给定的半径处创建圆圈 I used 但讨厌它产生的粗糙边缘 所以我正在考虑制作或使用圆形字体 我将使用以下方式输出 这样字体就会产生一个边缘光滑的圆圈 我的问题是使 字体大小 与 半径大小 匹配 有任
  • PHP/MySQL:从 YYYY-MM-DD 转换为 DD 月,YYYY?

    我在 MySQL 表中有一个 DATE 列 它以以下格式表示日期 YYYY MM DD 我想使用 PHP 从数据库中检索日期 但显示如下 DD 月 YYYY 例如 从 2009 04 13 到 2009 年 4 月 13 日 女巫是最好的方
  • 在 Enterprise Architect 中为 PHP 生成 getter 和 setter

    我正在使用 Enterprise Architect 制作 UML 类图并生成 PHP5 代码 如何为某个类生成 getter 和 setter 方法 Add the lt
  • XML 解析器错误:未定义实体

    我在 stackoverflow 上搜索了这个问题 并找到了一些主题 但我觉得在这个问题上没有真正可靠的答案 我有一个用户提交的表单 字段的值存储在 XML 文件中 XML 设置为使用 UTF 8 编码 用户时不时地会从某处复制 粘贴文本
  • laravel 5.1 在没有重新启动虚拟机的情况下看不到作业文件的更改

    我在 Laravel 5 1 应用程序中创建了一个新作业 在 Homestead VM 中运行 我已将其设置为排队并在句柄方法中有代码 handle 方法之前需要传递一个参数 但现在不再需要 我已从handle 方法中删除了该参数 但是 当
  • PHP 使用破折号箭头“->”检索数组值

    我已经使用 PHP 有一段时间了 但从来都不是一个高级程序员 我觉得这是一个愚蠢的问题 但从未理解为什么可以使用不同的方法检索某些数组值 This array gt value 而不是正常的 array value 标准 array val
  • 为什么 PHP 函数调用*如此*昂贵?

    PHP 中的函数调用是昂贵的 这是一个测试它的小基准
  • 购物车商品未显示在客户视图中

    运行 Magento 1 7 2 当在管理员的客户视图中时 它显示客户购物车中的 1 件商品 但不显示详细信息 我附上了屏幕截图 有谁知道问题可能是什么 或者您能否验证它是否正常工作 以便我知道这是我的安装 Thanks 在此处查看屏幕截图
  • 如何 ?将表单发布到多个位置

    我有一个表单需要发布到多个脚本 我怎样才能以最简单的方式做到这一点 我知道这可以用 Javascript Curl 或 Snoopy 类来完成 但实际上这是最简单和最好的方法 其中一个脚本发送电子邮件 它是一个 php 文件 另一个脚本托管
  • 替换 PHP 字符串中的特殊字符的问题

    我正在尝试将 PHP 字符串中的特殊字符替换为普通字符 例如将 替换为 o 将 替换为 a 我尝试使用 PHP Normalizer normalize 函数 如以下代码所示 if Normalizer isNormalized word

随机推荐

  • 使用 Linq 对 XML 进行复杂排序

    我尝试为我的问题找到解决方案 但我在该领域 Linq XML 的知识相当有限 已经找到一个模拟施工 https stackoverflow com questions 6922180 sort xmldocument using linq
  • 如何将滚动条向上移动一行? (在 C# RichTextBox 中)

    对于我的 C RichTextBox 我想以编程方式执行与单击垂直滚动条顶部的向上箭头相同的操作 这会将 RichTextBox 显示向上移动一行 这个的代码是什么 谢谢 这就是我所做的 using System Runtime Inter
  • 将一个元素放在集合的尾部

    我发现自己做了很多事情 concat coll e 其中 coll 是集合 e 是单个元素 Clojure 中有执行此操作的函数吗 我知道 conj 最适合向量 但我不知道将使用哪个 coll 例如 它可以是向量 列表或排序集 某些类型的集
  • Blowfish 加密在加密和解密过程中弄乱了前 8 个字节

    我刚刚尝试使用 openssl c 库 Blowfish 算法进行一些加密 解密 并遇到了一个奇怪的错误 解密消息的前 64 位不知何故搞砸了 我究竟做错了什么 这是代码 include
  • 为什么我的 HTML 不使用 CSS 中定义的最后一个样式?

    我有以下按此顺序编写的 CSS h2 last child p last child ul last child margin bottom 0 content message margin 20px 1 667em 1 667em 1 6
  • 选择单元格中的所有形状

    我需要选择给定单元格中的所有形状 我写了这段代码 但它生成错误 Dim sh as shape For Each sh In ActiveSheet Shapes If Not Intersect Range B2 sh TopLeftCe
  • 使用打字稿的反应表出了问题

    将react table 与useGlobalFilter 一起使用时出现打字稿错误 我只是按照互联网上的一些说明进行操作 这是我的代码 const DataTable React FC
  • jScrollpane Chrome问题

    在 JScrollPane 站点的 已知问题 中 有一个 在 Webkit 浏览器中 CSS 必须是 包含在 JavaScript 之前 我这样做了 但有时我仍然遇到 仅在第一页 索引中 一些滚动问题 滚动就消失了 在我再次刷新页面后一切正
  • 使用 vba 创建“色阶”(避免条件格式)

    我正在寻找一种通过 VBA 代码将色阶应用于一组单元格的方法but not通过应用一些条件格式 我想将它们应用为静态颜色 内部颜色 我搜索了很多 Excel 网站 谷歌和 stackoverflow 但什么也没找到 对于我的情况 如果你看下
  • 使用 PowerMock 和 Mockito 模拟 Logger 和 LoggerFactory

    我想模拟以下记录器 但要验证日志条目是否被调用 而不是内容 private static Logger logger LoggerFactory getLogger GoodbyeController class 我想模拟用于 Logger
  • 自定义工具提示格式

    我在 Windows 上使用普通的原生 C 语言工作 没有其他平台 没有 C 是的 我是恐龙 我试图找到一个我认为的 所有者绘制工具提示控件 的示例 但这似乎不存在 至少对于标准 Windows 工具提示控件来说不是 我尝试搜索实现自定义工
  • 无需在线即可从 XMPP 获取离线消息

    我们的移动聊天应用程序使用 ejabberd 服务器 我们正在为我们的 IOS 应用程序使用 IOS XMPP Framework https github com robbiehanson XMPPFramework https gith
  • Jquery UI 选项卡在 AngularJS 中不起作用

    我在 angularJS 中使用 jquery UI 选项卡 并使用 ng repeat 生成列表项和选项卡容器 选项卡可以正常工作 但选项卡容器无法正常工作 模板 tabs html ul li a class pageName href
  • 下拉列表在 php 中保留先前选择的值

    我在 php 中创建了一个个人资料页面 用户使用 html 下拉列表选择性别 html代码如下 Gender
  • 当开关用于枚举时,default 有什么用?

    假设我有一个枚举Color有 2 个可能的值 RED and BLUE public enum Color RED BLUE 现在假设我有这个枚举的 switch 语句 其中有两个可能值的代码 Color color getColor a
  • C 和 C++ 中的“**”是什么意思?

    当一个对象开头有两个星号时意味着什么 variable 在声明中 这意味着它是一个指向指针的指针 int x declare x as a pointer to a pointer to an int 使用它时 它会引用它两次 int x
  • Chrome 扩展弹出窗口的非阻塞警报

    我正在制作一个 chrome 扩展 为此我需要在弹出窗口中添加一些非阻塞警报 定期警报会暂停 javascript 代码执行 而客户端并不希望这样 我尝试使用 jQuery 的 UI 对话框 但是当我单击 确定 按钮关闭它时 弹出窗口失去焦
  • 字符串和数组泛型方法将来将被弃用

    在下面的链接 MDN 站点 中 它显示 字符串泛型是非标准的 已弃用 将来可能会被删除 请注意 如果不使用下面提供的填充程序 则不能跨浏览器依赖它们 他们所指的方法是否是他们在此声明下方提供的垫片中列出的方法 这是我见过的唯一对 字符串泛型
  • 从 Angular 的详细信息页面导航回来后保持搜索页面的状态

    我是 Angular 新手 当用户通过单击搜索结果中的链接导航到详细信息页面时 我需要维护搜索结果页面的状态 即保留搜索结果网格的排序和过滤值 网格并再次导航回搜索页面 我尝试使用 CustomReuseStartegy 但遇到两个问题 当
  • 在 woocommerce 中创建带有音频文件的可下载产品

    相信你的一天过得很充实 我需要从前端创建一个可下载的 woocommerce 产品 我已经能够创建链接来发布产品并将音频文件添加为附件 但我需要在付款后使此附件可下载 就像您从仪表板发布可下载的 woocommerce 产品时一样 我已经可