我有一个自定义的帖子类型bhour
, 带字段bh_shortcode
. 保存这种类型的帖子时,我希望它根据帖子的值bh_shortcode
.
如果bh_shortcode
是“test”,当一个[测试]快捷码标记出现在一个普通的post类型上时,不会发生任何事情--[测试]文本不会被替换。
如果我放置add_shortcode(\'test\',\'save_bhour_details\');
在功能之外,将替换[测试]文本。
如何使用add_shortcode
函数内部的另一个函数?
function bhour_shortcode_handler(){
global $post,$bhourdays;
$output=\'<p>this is a test</p>\';
return $output;
}
add_action(\'save_post\', \'save_bhour_details\');
function save_bhour_details(){
global $post, $bhourdays;
if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ){
return;
}
if ( get_post_type($post) != \'bhours\'){
return;
}
//retrieve current values
$current = get_post_custom();
//if($_POST[\'bh_shortcode\']!==$current[\'bh_shortcode\'][0]){
//remove current shortcode
remove_shortcode($current[\'bh_shortcode\'][0]);
//save new value
save_bhour_field(\'bh_shortcode\');
//get current values
$current = get_post_custom();
//register new shortcode
add_shortcode($current[\'bh_shortcode\'][0], \'bhour_shortcode_handler\');
//}
//register new shortcode
add_shortcode($current[\'bh_shortcode\'][0], \'bhour_shortcode_handler\');
}