J'ai un type de message personnalisé bhour
, avec un champ bh_shortcode
. Lorsqu'une publication de ce type est enregistrée, j'aimerais qu'elle ajoute un shortcode basé sur la valeur de la publication, bh_shortcode
.
Si la valeur de bh_shortcode
est "test" et si une balise shortcode [test] apparaît sur un type de message normal, rien ne se passe - le texte [test] n'est pas remplacé.
Si je place add_shortcode('test','save_bhour_details');
en dehors de la fonction, le texte [test] est remplacé.
Comment utiliser la fonction add_shortcode
dans une autre fonction?
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');
}
Il suffit d’utiliser le code suivant dans votre plugin.,
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' );
Je pense que cela peut vous aider à répondre à vos besoins.