filters - How to remove get_post_metadata using remove_filter inside a class?

This is the filter that i use.add_filter('get_post_metadata', array(WPKWP::CLASS_NAME, 'get_post_metadat

This is the filter that i use. add_filter('get_post_metadata', array(WPKWP::CLASS_NAME, 'get_post_metadata'), 10, 4);

I have to use the get_metadata inside the above call back function. If I use directly it will create an infinite loop, so I believe I have to remove the filter temporally and enable it back .

But remove_filter('get_post_metadata', array(WPKWP::CLASS_NAME, 'get_post_metadata'), 0); does not seems to work

 public static function get_post_metadata($meta_value, $post_id, $meta_key, $single){
        if (is_admin()){
            return null;
        }

        remove_filter('get_post_metadata', array(WPKWP::CLASS_NAME, 'get_post_metadata'), 0);
        $child_meta = get_metadata('post', $post_id, $meta_key, false);
        $meta=null;
        if (WPKWP::get_parent()){
            $parent_meta = get_metadata('post', WPKWP::get_parent(), $meta_key, false);

            if (is_array($parent_meta) && is_array($child_meta)) {
                $meta = array_merge($parent_meta, $child_meta);
            } else {
                $meta = $parent_meta;
            }
        } else {
            $meta = $child_meta;
        }
        add_filter('get_post_metadata', array(WPKWP::CLASS_NAME, 'get_post_metadata'), 0, 4);
        return $meta;
    }

Update : @kero add_filter('get_post_metadata', array(WPKWP::CLASS_NAME, 'get_post_metadata'), 0, 4); which is added after removing seems to bring back the filter again. filter mode becomes active even if removed ..any fixes for that ?

发布者:admin,转转请注明出处:http://www.yc00.com/questions/1744919553a4601046.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信