function t_shortcode($atts, $content = null){
$lang = strtolower($atts['lang']);
$content = "<div id='translator' class='translate_".$lang."'>".$content."</div>";
if($lang == $_SESSION['language']):
return $content;
endif;
}
J'essaie d'obtenir le contenu entre les codes abrégés, de lui appliquer une fonction dans index.php et de renvoyer le contenu $ du code abrégé avec les div inclus.
la deuxième fonction que je voudrais appliquer à la fonction shorcode est:
function display($shortcodecontent, $noofchars){
$content2 = mb_substr($shortcodecontent,0,$noofchars);
return $content2;
}
pour que je puisse utiliser: // 13 est le nombre de caractères
Ce qui suit ajoute le shortcode [my_t_shortcode]
, qui accepte un attribut 'lang' et applique la fonction mentionnée ci-dessus au contenu.
//Add shortcodes
add_shortcode( 'my_t_shortcode', 'wpse41477_shortcode_handler' );
//It's good practise to make sure your functions are prefixed by something unique
function wpse41477_shortcode_handler( $atts, $content = null ) {
//This will extract 'lang' attribute as $lang. You can supply default values too.
extract( shortcode_atts( array(
'lang' => 'default_lang',
), $atts ) );
//The above lowercases all values.
/* Apply external function. 'display' is too generic,
* give it a unique prefix to prevent a clash with another plugin/theme/WordPress
*/
$content = wpse41477_display($content,13);
//why not do $content = mb_substr($content,0,13); instead?
//Apply divs
$content = "<div id='translator' class='translate_".$lang."'>".$content."</div>";
//Not sure what the following is for, but I've left it in.
if($lang == $_SESSION['language']):
return $content;
endif;
}
Et la fonction personnalisée:
function wpse41477_display($shortcodecontent, $noofchars){
$content2 = mb_substr($shortcodecontent,0,$noofchars);
return $content2;
}
Si c'est le cas, wpse41477_display
, je vous recommande fortement de l'inclure directement dans le gestionnaire de shortcode (voir les commentaires).
Le code ci-dessus n'a pas été testé.