问题描述

我认为这可能是一个普通的 php 问题,但我发布在这里,因为它涉及一个 WP 功能。我在一个类中的 manage_posts_custom_column 上有一个 add_action 的问题。这是代码 (剥离了一点):

class The_class{

    function __construct() {
        $this->add_actions();
    }

    function add_actions() {
        add_action('admin_notices', array($this, 'admin_notices'));
        add_action('manage_posts_custom_column', array($this, 'manage_post_columns', 10, 2));
    }

    function admin_notices() {
    // Works fine
    }

    function manage_post_columns($column_name, $post_id)
        switch ($column_name) {
            case 'xxxyyzz':
                // The code
            break;
            default:
                // Error
            break;
        }
    }
}

我得到的错误是 Warning: call_user_func_array() expects parameter 1 to be a valid callback, array must have exactly two members in xxx/wp-includes/plugin.php on line 405

更深入地,我发现 manage_posts_custom_column 在扩展 WP_List_TableWP_Posts_List_Table 类中被引用,我不知道这是否是错误的原因?

如何解决这个问题?

编辑:

对于初学者,我可以正确地写出动作!而不是 add_action('manage_posts_custom_column', array($this, 'manage_post_columns', 10, 2));,它应该是 add_action('manage_posts_custom_column', array($this, 'manage_post_columns'), 10, 2); 。注意)的位置。 🙂

最佳解决方案

你的问题是一个简单的打字错误:

array($this, 'manage_post_columns', 10, 2)

VS.

array($this, 'manage_post_columns'), 10, 2

我想你看到了差异

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。