调用未定义的方法-下载监视器

时间:2013-08-12 作者:SmashBrando

我一直在为添加一些自定义项Download Monitor

到目前为止,我已经能够添加自定义元复选框,并使用以下代码保存它们。

global $post, $download;

//add additional meta to download monitor post screen.
function add_custom_dm_options( $post ) {
        global $post, $thepostid;
        $thepostid = $post->ID;

        echo \'<p class="form-field form-field-checkbox">
            <input type="checkbox" name="_act_sub" id="_act_sub" \' . checked( get_post_meta( $thepostid, \'_act_sub\', true ), \'yes\', false ) . \' />
            <label for="_act_sub">\' . __( \'Active Subscriber\', \'download_monitor\' ) . \'</label>
            <span class="description">\' . __( \'This download is only for users who belong to the Active Subscriber Role.\', \'download_monitor\' ) . \'</span>
        </p>\';

    }
add_action( \'dlm_options_end\', \'add_custom_dm_options\' );

//save additional meta on download monitor post.
function save_custom_dm_options( $post_id, $post ) {
  $_act_sub = ( isset( $_POST[\'_act_sub\'] ) ) ? \'yes\' : \'no\';
  update_post_meta( $post_id, \'_act_sub\', $_act_sub );
}
add_action( \'dlm_save_meta_boxes\', \'save_custom_dm_options\', 1, 2 );
下一步是确定用户是否已登录,以及帖子是否使用\\u act\\u sub保存。

以下是我使用的代码:

//new rules using the act_sub post meta check and the active_subscription user role. 
function subscription_access( $post, $download ) {

        if ( $download->is_act_sub() && ! is_user_logged_in() )
            $can_download = true;

        return $can_download;
    }
add_filter( \'dlm_can_download\', \'subscription_access\', 1, 2 );
这段代码都在同一个函数文件中,因此它还使用了前面所述的全局变量。

当我转储$download变量时,我得到:pastebin

我只能很好地使用\\u members\\u的内置元密钥,但我还不能使用自定义元密钥。我检查了数据库,一切都保存得很好。

有人能帮我确定是否有语法问题吗?

插件-下载MonitorCustom插件-上面的代码

3 个回复
SO网友:SmashBrando

看来问题主要与范围有关。在这种情况下,需要以下内容才能获取post ID:

php $download->post->ID

然后,我可以通过以下方式获得我的元值:

php $active_sub_status = get_post_meta( $download->post->ID , \'_act_sub\', true );

SO网友:DEZEE

我问过作者,我是如何将DM设置为默认情况下只能由成员访问的。他告诉我使用apply\\u过滤器(\'dlm\\u can\\u download\',true,$download,$version)

我不知道如何应用这个,因为我不是一个很好的程序员

SO网友:Maddish

我可以通过$download->id获得正确的帖子/下载id。

    function check_download_permissions($can_download,$download) {
        $target_post = $download->id; // This is how to get the post id
        if(get_post_meta($target_post, \'_act_sub\', true) && ! is_user_logged_in()){
            $can_download = true;
        }
        return $can_download;
    }  

    add_filter( \'dlm_can_download\', \'check_download_permissions\', 10, 2);

结束