我正在使用OOP编写一个插件。我意识到过滤器和动作挂钩需要放在WordPress中的构造函数方法中,如下所示:
add_action(\'wp_enqueue_scripts\', array($this, \'add_js_css\'));
据我所知,过滤器应该是一样的:
add_filter(\'attachment_fields_to_edit\', array($this, \'attachment_fields\', 15, 2));
The
attachment_fields()
方法应该返回一个数组(我在类外对其进行了测试,它可以正常工作),但它似乎返回
null
在类内调用时。我猜这是因为它被称为课堂内部,但我不知道该怎么办!
如果有用,该方法如下所示:
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;
}
有什么建议吗?
SO网友:chrisguitarguy
如果这确实是您的代码:
<?php
add_filter(\'attachment_fields_to_edit\', array($this, \'attachment_fields\', 15, 2));
它不起作用的原因是括号放错了位置。尝试以下操作:
<?php
add_filter(\'attachment_fields_to_edit\', array($this, \'attachment_fields\'), 15, 2);