Je travaille avec un shortcode [translate lang=eng]Apple[/translate]
qui ne sera affiché que si la "langue courante" est eng
. Si la publication contient, outre ce qui précède, la déclaration [translate lang=rus]Яаблоко[/translate]
et que la langue actuelle n'est ni rus
ni eng
, ni Яаблоко
ni Apple
ne sont imprimés.
Mon objectif est d’imprimer le message dans la langue par défaut lorsque la langue actuelle ne correspond pas à celle de l’attribut [translate lang]
. Cela implique que le message (dans la langue par défaut) sera imprimé autant de fois que [translate]
est utilisé dans le message, mais je dois m'inquiéter pour ...
Ce que j'ai besoin de savoir, c'est s'il existe une fonction get_shortcodes()
qui me donnera une array
(ou autre) de tous les codes courts de la publication. Aurais-je analyser le message avec regex sinon? Avez-vous de meilleures suggestions?
Merci de ne pas me parler de plugins de traduction "supérieurs".
C'est le mieux que je puisse trouver:
function wpse20389_show_shortcode_tags()
{
echo '<pre>Shortcode Tags: ';
print_r( $GLOBALS['wp_filter']['the_content'] );
echo '</pre>';
}
add_action( 'shutdown', 'wpse20389_show_shortcode_tags' );
il existe une fonction get_shortcode_regex () dans wp-include/shortcodes.php. Il est utilisé par do_shortcode () et d’autres. Il est assez facile d'adopter l'expression regex.
global $post;
$tags = array();
$pattern = '(.?)\[(translate)\b\s+(.*?)(?:(\/))?\](?:(.+?)\[\/translate\])?(.?)';
$pattern = "/$pattern/s";
preg_match_all($pattern, $post->post_content, &$tags, PREG_SET_ORDER);
foreach ($tags as $t ){
// iterate over tags...
}