web-dev-qa-db-fra.com

add_action 'manage_posts_custom_column' dans une classe

Je pense que cela peut être plus une question php générale, mais je la poste ici car elle concerne une fonction WP. J'ai quelques problèmes avec un add_action sur manage_posts_custom_column dans une classe. Voici le code (un peu dépouillé):

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;
        }   
    }
}

L'erreur que je reçois est 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.

En regardant plus profondément, j'ai trouvé que l'action manage_posts_custom_column est référencée dans la classe WP_Posts_List_Table qui étend WP_List_Table et je me demande si c'est la cause de l'erreur?

Comment puis-je contourner cela?

Modifier:

Bien pour commencer je pourrais écrire l'action correctement !!! Au lieu de add_action('manage_posts_custom_column', array($this, 'manage_post_columns', 10, 2));, ce devrait être add_action('manage_posts_custom_column', array($this, 'manage_post_columns'), 10, 2);. Notez la position du ). :-)

6
Niels

Votre problème est une simple faute de frappe:

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

CONTRE.

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

Je suppose que tu vois la différence

8
kaiser