今天我在开发一个新插件时遇到了一个奇怪的问题。
我像往常一样设置它,创建f711-roomprice
Plugindirectory中的文件夹,并创建f711-roomprice.php
以及inc
目录在那里。
激活挂钩和包含的函数一切正常,直到我创建了一个包含:
include(\'inc/filter-savepost.php\');
此文件包含以下代码:
add_action( \'save_post\', \'f711_roomprice_meta_box_save\' );
function f711_roomprice_meta_box_save( $post_id ) {
if( !isset( $_POST[\'f711_roomprice_prices\'] ) ) return;
if( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) return;
if( !isset( $_POST[\'meta_box_nonce\'] ) || !wp_verify_nonce( $_POST[\'meta_box_nonce\'], \'f711_roomprice_box_nonce\' ) ) return;
if( !current_user_can( \'edit_post\', $post_id ) ) return;
foreach( $_POST[\'f711_roomprice_prices\'] as $room => $seasons ) {
foreach( $seasons as $season => $price ) {
f711_roomprice_insert( $room, $season, $price );
}
}
}
在我的主插件文件中包含该文件后,我出现了一个错误,导致在保存帖子时出现了一个白色屏幕,其他一切正常。
功能f711_roomprice_meta_box_save
已调用,并用wp_die(\'f711_roomprice_meta_box_saveis called\')
在那里。
现在最奇怪的是,我将代码(与include文件中的代码完全相同)放在主插件文件中,当然跳过了include。现在,它的工作就像我想要的那样。
我还试着添加save_post
主插件文件中的操作,包括inc/filter-savepost.php
, 还是像以前一样得到了错误的结果。
我做错了什么?代码(挂钩、函数)在插件中的位置真的很重要吗,还是我自己出了问题?