web-dev-qa-db-fra.com

Utilisation du filtre attachment_fields_to_edit dans la classe du plugin

J'écris un plugin en utilisant la POO. Je me rends compte que les filtres et les crochets d’action doivent être placés dans la méthode constructeur de WordPress comme ceci:

add_action('wp_enqueue_scripts', array($this, 'add_js_css'));

Autant que je sache, il devrait en être de même pour les filtres:

add_filter('attachment_fields_to_edit', array($this, 'attachment_fields', 15, 2));

La méthode attachment_fields() devrait renvoyer un tableau (je l'ai testé en dehors de la classe et cela fonctionne), mais il semble renvoyer null lorsqu'il est appelé à l'intérieur de la classe. Je suppose que c'est parce que ça s'appelle à l'intérieur de la classe, mais je ne sais pas quoi faire à ce sujet!

Si c'est utile, la méthode ressemble à ceci:

public function attachment_fields($form_fields) {
    global $post;
    $file = wp_get_attachment_url($post->ID);
    unset($form_fields['post_excerpt']);
    unset($form_fields['post_content']);
    unset($form_fields['url']['helps']);
    $form_fields['url']['label'] = 'URL';
    $form_fields['url']['html'] = "<input type='text' class='text urlfield' name='attachments[$post->ID][url]' value='" . esc_attr($file) . "' /><br />";
    $form_fields['buttons'] = array(
    'label' => '',
    'value' => '',
    'html' => "<input type='submit' class='button' name='send[$post->ID]' value='" . esc_attr__( 'Add MP3' ) . "' />",
    'input' => 'html'
    );
    return $form_fields;
}

Aucun conseil?

3
Richard Sweeney

Si c'est vraiment votre code:

<?php
add_filter('attachment_fields_to_edit', array($this, 'attachment_fields', 15, 2));

Cela ne fonctionne pas à cause d'une parenthèse mal placée. Essaye ça:

<?php
add_filter('attachment_fields_to_edit', array($this, 'attachment_fields'), 15, 2);
1
chrisguitarguy