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?
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);