我有一个自定义的帖子类型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\');
}
最合适的回答,由SO网友:John Peter 整理而成
只需按照插件中的以下代码示例使用即可。,
function wp_shortcode( $atts ) {
extract( shortcode_atts( array(
\'foo\' => \'something\',
\'bar\' => \'something else\',
), $atts ) );
//return "foo = {$foo}";
return your_function();
}
add_shortcode( \'your-shortcode\', \'wp_shortcode\' );
我认为这可能有助于你满足自己的需求。