0

我有一个使用 Restrict content pro 的客户。虽然客户喜欢限制内容专业版,但它有一个问题 - 他希望帖子在 10 天后自动更改为付费用户,而 RCP(限制内容专业版)不提供此功能。

即使使用试用帖子也只允许订阅用户或登录用户,所以我必须根据客户的需要进行修改。

因此,在帖子的订阅级别上有默认选项“全部”,如果您选择它意味着该帖子将对公众开放,但如果您选择另一个订阅的订阅级别,则说高级订阅该帖子将只对登录用户可见。

我希望此选项在发布日期达到 10 天时自动更改,因此如果帖子还不到 10 天,它将是免费的。但是,如果帖子达到 10 天,那将是溢价。希望你能帮我解决这个问题

这是原始代码:

case 'levels':
echo '<select name="', $field['id'] . '" id="' . $field['id'] . '">';

$levels = rcp_get_subscription_levels( 'all', false );
echo '<option value="all">' . __( 'All', 'rcp' ) . '</option>';
foreach ($levels as $level) {
    echo '<option value="' . $level->id . '"', $meta == $level->id ? ' selected="selected"' : '', '>',     $level->name, '</option>';
}
echo '</select>';
break;

这是我修改后的代码不起作用:

//modification end here
$pubdate = the_date();
if (($pubdate < 10) == true){
    $levels = rcp_get_subscription_levels( 'all', false );
    echo '<option value="all">' . __( 'All', 'rcp' ) . '</option>';
} else{
    foreach ($levels as $level) {
        echo '<option value="' . $level->id . '"', $meta == $level->id ? ' selected="selected"' : '',     '>',     $level->name, '</option>';
    }
}
//modification end here
4

1 回答 1

0

我认为您的解决方案的问题在于您正在尝试更新管理员界面(用于选择是否希望您的内容由会员付费或访问)。换句话说,您正试图在错误的地方破解代码。

相反,当您选择 Restrict Content Pro 的属性时,我会查看正在保存的自定义字段。我刚刚在我的一个网站上运行了一个测试,该网站也由 Restrict Content Pro 提供支持,在创建了一个虚拟帖子并将其配置为仅限付费用户和一个特定的用户计划之后,我注意到保存了一些自定义字段值(你可以使用 phpMyAdmin 或任何其他 DB 接口在数据库中看到这一点,我之所以建议这样做而不是 WordPress 中的自定义字段元框是因为有些字段已序列化并且未显示在元框中)。

在我的测试中,我注意到虚拟帖子的以下值发生了变化。

Custom Field Name       Example of Value
----------------------------------------
rcp_access_level        None
rcp_subscription_level  a:1:{i:0;s:1:"2";}
rcp_user_level          All

因此,为了实现您需要的内容,我会尝试在 WordPress cron 作业中运行一个脚本,该脚本会在 10 天内搜索帖子,然后相应地更新帖子的这些自定义字段值。

为了查看要更改的内容,我建议查看restrict-content-pro\includes\admin\metabox.php 第140 行上的代码(** 这在您的版本中可能有所不同)以查看函数 rcp_save_meta_data( $post_id ) 里面有什么。

特别是您可能需要更新rcp_subscription_level值以使用您希望保护内容的计划级别。相反,如果您希望您的内容受到用户级别的保护,请更新rcp_user_level.

于 2013-12-03T19:32:36.913 回答