it-swarm.com.de

Verwenden des Filters "attachment_fields_to_edit" in der Plugin-Klasse

Ich schreibe ein Plugin mit OOP. Mir ist klar, dass Filter und Aktions-Hooks in der Konstruktormethode von WordPress wie folgt platziert werden müssen:

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

Soweit ich weiß, sollte es für Filter dasselbe sein:

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

Die Methode attachment_fields() sollte ein Array zurückgeben (ich habe es außerhalb der Klasse getestet und es funktioniert), aber es scheint null zurückzugeben, wenn es innerhalb der Klasse aufgerufen wird. Ich vermute, es liegt daran, dass es innerhalb der Klasse aufgerufen wird, aber ich bin nicht sicher, was ich dagegen tun soll!

Wenn es nützlich ist, sieht die Methode folgendermaßen aus:

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

Irgendein Rat?

3
Richard Sweeney

Wenn das wirklich dein Code ist:

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

Der Grund, warum es nicht funktioniert, ist eine falsch gesetzte Klammer. Versuche dies:

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