Répertoire d'articles
- 1 Pourquoi la section des commentaires ne prend-elle pas en charge les codes courts ?
- 2 Comment activer la prise en charge des codes courts pour les commentaires ?
- 3 Code permettant d'activer en toute sécurité les shortcodes de la section commentaires
- 4 最佳实践
- 5 Version dynamiquement améliorée : Interface des paramètres d’administration (Recherche + Regroupement + Conseils pour l’interface utilisateur)
- 6 Résumé
Dans WordPress Entrez votre avis dans la section commentaires de l'article. [shortcode]Cependant, le résultat affiche du texte brut au lieu de l'effet souhaité. Il s'agit en fait du comportement par défaut de WordPress. Ci-dessous, j'analyserai en détail les raisons de ce problème et proposerai une solution complète.
Pourquoi la section des commentaires ne prend-elle pas en charge les codes courts ?
Restrictions par défaut
Pour des raisons de sécurité, WordPress ne s'exécute pas automatiquement dans la section des commentaires.do_shortcode()Cela empêche les utilisateurs d'insérer arbitrairement des formulaires, des scripts ou tout autre contenu susceptible d'affecter la sécurité du site.Champ d'application limité
L'abréviation est principalement conçue pour être utilisée dans le contenu des articles (the_contentCela inclut les gadgets ou les plugins spécifiques, tandis que la section des commentaires n'est pas prise en charge par défaut.Interférence de formatage automatique
Le texte du commentaire serawpautopAjouter automatiquement<p>et<br>Les balises, qui peuvent rompre la structure syntaxique des codes courts, les rendant illisibles.

Comment activer la prise en charge des codes courts pour les commentaires ?
Activer les codes courts de commentaires
Sur le sujetfunctions.phpAjoutez le code suivant à votre fichier ou à votre plugin d'extrait de code :add_filter('comment_text', 'do_shortcode');Cela permettra d'utiliser des codes courts dans la section des commentaires.
Vérifiez si le plugin est activé.
De nombreux codes courts proviennent d'extensions (comme Contact Form 7 et WooCommerce). Si l'extension n'est pas activée, les codes courts ne fonctionneront pas.Évitez les erreurs de syntaxe
Veuillez confirmer que l'abréviation est correctement écrite, par exemple :[shortcode attribute="value"]内容[/shortcode]Vérifiez les conflits de thème ou de plugin
Passez au thème par défaut (tel que Twenty Twenty-Five), désactivez chaque plugin un par un pour tester et confirmer s'il existe des conflits qui provoquent un dysfonctionnement du shortcode.vider le cache
Lorsque vous utilisez des plugins de mise en cache ou des CDN, vous devez vider le cache après la correction pour en constater l'effet.
Code permettant d'activer en toute sécurité les shortcodes de la section commentaires
Pour éviter les risques de sécurité, il est possible de functions.php Ajoutez l'exemple complet suivant :
<?php
// 在评论区启用简码解析
add_filter('comment_text', 'do_shortcode');
// 限制允许的简码列表
function safe_comment_shortcodes($content) {
// 定义允许的简码(加入 su_posts)
$allowed_shortcodes = array('gallery', 'audio', 'video', 'contact-form-7', 'su_posts');
// 遍历评论内容中的简码
return preg_replace_callback('/\[(\w+)([^\]]*)\]/', function($matches) use ($allowed_shortcodes) {
$shortcode = $matches[1];
// 如果简码在允许列表中,正常解析
if (in_array($shortcode, $allowed_shortcodes)) {
return do_shortcode($matches[0]);
}
// 否则直接输出原始文本,避免执行
return esc_html($matches[0]);
}, $content);
}
add_filter('comment_text', 'safe_comment_shortcodes', 9);
description du code
- Activer les codes courtsPremière ligne
add_filter('comment_text', 'do_shortcode');Activez la prise en charge des codes courts dans la section des commentaires. - codes courts restreints:passer
$allowed_shortcodesLes définitions de tableaux autorisent les abréviations, par exemplegallery,audio,video,contact-form-7,su_posts. - Manipulation en toute sécuritéSi l'utilisateur saisit un code court qui ne figure pas dans la liste autorisée, ce code sera automatiquement converti en texte brut afin d'éviter l'exécution de codes courts potentiellement dangereux.
最佳实践
- N'autoriser que les shortcodes nécessairesPar exemple, dans les présentations ou formulaires multimédias, évitez d'utiliser trop de codes courts.
- Vérifiez régulièrement les mises à jour des plugins.Assurez-vous que le plugin de source de shortcode est sûr et fiable.
- Combinaison de plugins de mise en cache et de protectionPour éviter la pression sur les performances causée par le rendu des codes courts.
Version dynamiquement améliorée : Interface des paramètres d’administration (Recherche + Regroupement + Conseils pour l’interface utilisateur)
Si vous souhaitez plus de flexibilité, vous pouvez utiliser le code amélioré suivant :
- Lister automatiquement tous les codes courts enregistrés(Y compris celles fournies par les plugins).
- Permet la saisie de codes courts personnalisés(Tel que
). - barre de recherche:rapidePositionnementAbréviation.
- Affichage groupéLe regroupement par source de plugin rend l'utilisation plus intuitive.
- 角色权限Seuls les codes courts figurant dans les commentaires des administrateurs seront analysés ; les codes courts figurant dans les commentaires des utilisateurs ordinaires afficheront le message « Ce code court est réservé aux administrateurs ».
<?php
// 添加后台菜单
function cwl_shortcode_settings_menu() {
add_options_page(
'评论简码设置',
'评论简码设置',
'manage_options',
'cwl-shortcode-settings',
'cwl_shortcode_settings_page'
);
}
add_action('admin_menu', 'cwl_shortcode_settings_menu');
// 注册设置
function cwl_register_shortcode_settings() {
register_setting('cwl_shortcode_settings_group', 'cwl_allowed_shortcodes');
register_setting('cwl_shortcode_settings_group', 'cwl_custom_shortcodes');
}
add_action('admin_init', 'cwl_register_shortcode_settings');
// 设置页面内容
function cwl_shortcode_settings_page() {
global $shortcode_tags;
$allowed = get_option('cwl_allowed_shortcodes', array());
$custom = get_option('cwl_custom_shortcodes', array());
?>
<div class="wrap">
<h1>评论区简码设置</h1>
<form method="post" action="options.php">
<?php settings_fields('cwl_shortcode_settings_group'); ?>
<h2>搜索简码</h2>
<input type="text" id="cwl_shortcode_search" placeholder="输入简码关键字..." style="width:300px;">
<h2>已注册简码(按插件来源分组)</h2>
<p>勾选允许在评论区执行的简码:</p>
<div id="cwl_shortcode_list">
<?php
// 按插件来源分组
$groups = array();
foreach ($shortcode_tags as $tag => $callback) {
$source = is_array($callback) ? get_class($callback[0]) : (is_object($callback) ? get_class($callback) : '主题/未知来源');
$groups[$source][] = $tag;
}
foreach ($groups as $source => $tags) {
echo "<h3>" . esc_html($source) . "</h3>";
foreach ($tags as $tag) {
?>
<label class="cwl_shortcode_item">
<input type="checkbox" name="cwl_allowed_shortcodes[]" value="<?php echo esc_attr($tag); ?>" <?php checked(in_array($tag, $allowed)); ?>>
<?php echo esc_html($tag); ?>
</label><br>
<?php
}
}
?>
</div>
<h2>自定义简码</h2>
<p>输入额外允许的简码(用逗号分隔):</p>
<textarea name="cwl_custom_shortcodes" rows="3" cols="50"><?php echo esc_textarea(implode(',', (array)$custom)); ?></textarea>
<?php submit_button(); ?>
</form>
</div>
<script>
// 简码搜索功能
document.getElementById('cwl_shortcode_search').addEventListener('keyup', function() {
var keyword = this.value.toLowerCase();
document.querySelectorAll('.cwl_shortcode_item').forEach(function(item) {
var text = item.textContent.toLowerCase();
item.style.display = text.indexOf(keyword) > -1 ? '' : 'none';
});
});
</script>
<?php
}
// 评论区简码过滤(结合角色权限 + 前端提示)
function cwl_safe_comment_shortcodes($content) {
$allowed_shortcodes = get_option('cwl_allowed_shortcodes', array());
$custom_shortcodes = get_option('cwl_custom_shortcodes', array());
$allowed_shortcodes = array_merge($allowed_shortcodes, (array)$custom_shortcodes);
return preg_replace_callback('/\[(\w+)([^\]]*)\]/', function($matches) use ($allowed_shortcodes) {
$shortcode = $matches[1];
// 管理员可解析简码
if (current_user_can('manage_options')) {
if (in_array($shortcode, $allowed_shortcodes)) {
return do_shortcode($matches[0]);
}
return esc_html($matches[0]);
} else {
// 普通用户提示信息
if (in_array($shortcode, $allowed_shortcodes)) {
return '<span style="color:red;">此简码仅管理员可用</span>';
}
return esc_html($matches[0]);
}
}, $content);
}
add_filter('comment_text', 'cwl_safe_comment_shortcodes', 9);
Résumé
Par défaut, les sections de commentaires WordPress n'interprètent pas les abréviations pour des raisons de sécurité et de performance. Vous pouvez utiliser [l'outil d'analyse] à la place. functions.php Ajoutez un filtre pour activer les codes courts et combinez-le avec la sécurité.
J'espère que le blog de Chen Weiliang ( https://www.chenweiliang.com/ L'article « Raisons et solutions aux problèmes d'analyse des shortcodes dans les sections de commentaires WordPress » partagé ici pourrait vous être utile.
Bienvenue à partager le lien de cet article :https://www.chenweiliang.com/cwl-34132.html
