web-dev-qa-db-ja.com

クラス内のadd_action 'manage_posts_custom_column'

これは一般的なphpの質問に近いかもしれないと思いますが、WP関数に関連しているのでここに投稿しています。クラス内のadd_actionmanage_posts_custom_columnに問題があります。ここにコードがあります(少し削除):

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_columnWP_Posts_List_Tableを拡張するWP_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);であるべきです。 )の位置に注意してください。 :-)

6
Niels

あなたの問題は単純なタイプミスです:

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

VS。

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

違いがわかると思います

8
kaiser