仅当用户购买了特定产品时才显示发布页面

时间:2019-05-06 作者:Lia Muscogiuri

我在Woocommerce遇到了麻烦。我需要卖视频。我创建了虚拟产品,每个产品都有一个指向不同帖子的链接(无需下载,因为我更喜欢将视频嵌入我的网站,并使用YouTube/Vimeo的流媒体)。我想,一旦用户购买了特定的视频,他就会收到指向特定帖子页面的链接。在这里之前,我知道该怎么做。但只有在他已经购买了链接的情况下,这个页面才应该可见。因此,如果他与其他人共享该链接,或者有人找到该链接,他将无法看到嵌入的视频。我不能使用角色,因为我需要为每个视频创建一个角色。

因此,我需要有一个循环,将当前页面ID与登录用户购买的每个产品的自定义ID(或可以添加到每个产品的自定义字段)进行比较。

如果(当前页面id==购买产品的自定义id),则显示帖子的内容。

有可能这样做吗?

非常感谢。

2 个回复
SO网友:WebElaine

是的,这是可能的。

基本上,您需要为视频显示的任何帖子类型创建主题模板。(如果是页面,请创建页面模板;如果是自定义帖子类型,请为该帖子类型创建模板)。根据插件的不同,您需要计算出具体的查询和代码,但基本上:

<?php
// First check if the user is logged in
if(is_user_logged_in()) {
    // If they\'re logged in, show the sitewide header
    get_header();
    // If they\'re logged in, have they bought this particular product?
    // First identify the product ID
    // Then check if they\'ve bought that product,
    // and save to a variable called $user_has_purchased
    // Then, add conditions for if they have bought it, and if they haven\'t
    // If they have:
    if($user_has_purchased == true) {
        // Now add your code to show the content, which may just be the_content
        if ( have_posts() ) :
            while ( have_posts() ) : the_post();
                the_content();
            endwhile;
        endif;
    } else {
        // Else here means they are logged in but haven\'t purchased
        // You could either show them a message with a link, or auto-redirect
        // to the product page to encourage them to buy it
        echo "Sorry, this content is only available by purchase.";
    }
    // Show the sitewide footer
    get_footer();
} else {
    // Else here means they are not logged in
    // So you could either link to the login form, or redirect them there
    wp_redirect( wp_login_url() ); exit;
}
?>
(请注意,页眉和页脚仅在用户登录时显示,因为“else”表示要重定向它们。如果已输出页眉,则无法重定向它们。)

如果您的视频显示页面都是自定义的帖子类型,那么这可能是最简单的。只要你有single-posttype.php 设置这些条件后,每次创建其中一个CPT时,它都会检查登录和购买情况。相反,如果您创建一个页面模板,并且必须手动为每个页面应用该模板,则很容易意外忘记设置模板,从而使您的内容意外公开。

SO网友:Brian

为$user\\u has\\u购买的部分搭载WebElaine:

创建仅接受产品的post对象字段,并将其附加到用户。现在,您可以将用户购买的特定产品推送到该字段中。当用户转到产品的单个页面时,您可以查询当前用户并检查此字段以查看其是否包含当前产品的ID。

相关推荐

The Loop not looping?

在进行了大量的故障排除和搜索之后,我想我终于明白了如何进行循环。但我似乎无法让它真正循环!我创建了一个子主题,并添加了functions.php 文件中包含以下代码:<?php function my_theme_enqueue_styles() { $parent_style = \'grow-thinkup-style-minimal\'; // This is \'twentyfifteen-style\' for the Twenty Fifteen the