Directori d'articles
- 1 Per què la secció de comentaris no admet codis curts?
- 2 Com puc habilitar la compatibilitat amb shortcodes per als comentaris?
- 3 Codi per habilitar de manera segura els shortcodes de la secció de comentaris
- 4 Millors pràctiques
- 5 Versió dinàmicament millorada: Interfície de configuració del backend (cerca + agrupació + suggeriments del frontend)
- 6 总结
在 WordPress Entra a la secció de comentaris de l'article [shortcode]Tanmateix, el resultat només mostra text pla en lloc de l'efecte desitjat? Aquest és en realitat el mecanisme per defecte de WordPress. A continuació, analitzaré sistemàticament els motius i proporcionaré una solució completa.
Per què la secció de comentaris no admet codis curts?
Restriccions per defecte
Per motius de seguretat, WordPress no s'executa automàticament a la secció de comentaris.do_shortcode()Això impedeix que els usuaris inserissin arbitràriament formularis, scripts o altres continguts que puguin afectar la seguretat del lloc web.Àmbit d'aplicació limitat
L'abreviatura està dissenyada principalment per al seu ús en el contingut de l'article (the_contentAixò inclou gadgets o complements específics, mentre que la secció de comentaris no és compatible per defecte.Interferència de formatació automàtica
El text del comentari seràwpautopAfegeix automàticament<p>和<br>Etiquetes, que poden trencar l'estructura sintàctica dels shortcodes, fent-los impossibles d'analitzar.

Com puc habilitar la compatibilitat amb shortcodes per als comentaris?
Habilita els codis curts de comentaris
Sobre el temafunctions.phpAfegiu el codi següent al fitxer o al complement de fragments de codi:add_filter('comment_text', 'do_shortcode');Això farà que la secció de comentaris utilitzi codis curts.
Comproveu si el complement està activat.
Molts codis curts provenen de complements (com ara Contact Form 7 i WooCommerce). Si el complement no està habilitat, els codis curts no funcionaran.Evitar errors de sintaxi
Si us plau, confirmeu que l'abreviatura estigui escrita correctament, per exemple:[shortcode attribute="value"]内容[/shortcode]Comprova si hi ha conflictes entre temes o complements
Canvieu al tema per defecte (com ara Twenty Twenty-Five), desactiveu cada connector un per un per provar i confirmar si hi ha conflictes que provoquin un mal funcionament del shortcode.netejar memòria cau
Quan feu servir complements de memòria cau o CDN, heu d'esborrar la memòria cau després de la correcció per veure'n l'efecte.
Codi per habilitar de manera segura els shortcodes de la secció de comentaris
Per evitar riscos de seguretat, és possible functions.php Afegiu el següent exemple complet:
<?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);
descripció del codi
- Habilita els codis curtsPrimera línia
add_filter('comment_text', 'do_shortcode');Activa la compatibilitat amb shortcodes a la secció de comentaris. - Codis curts restringits:passar
$allowed_shortcodesLes definicions de matrius permeten abreviatures, per exemplegallery,audio,video,contact-form-7,su_posts. - Manipulació seguraSi l'usuari introdueix un codi curt que no es troba a la llista permesa, el codi es convertirà automàticament en text sense format per evitar l'execució de codis curts potencialment perillosos.
Millors pràctiques
- Només permet els codis curts necessarisPer exemple, en presentacions o formularis multimèdia, eviteu utilitzar massa codis curts.
- Comproveu regularment si hi ha actualitzacions de complementsAssegureu-vos que el complement font del shortcode sigui segur i fiable.
- Combinació de complements de memòria cau i proteccióPer evitar la pressió de rendiment causada pel renderitzat de shortcode.
Versió dinàmicament millorada: Interfície de configuració del backend (cerca + agrupació + suggeriments del frontend)
Si voleu més flexibilitat, podeu utilitzar el següent codi millorat:
- Llista automàticament tots els codis curts registrats(Incloses les proporcionades pels complements).
- Admet la introducció de codis curts personalitzats(Tal com
)。 - quadre de cercaràpidPosicionamentAbreviatura.
- Visualització agrupadaAgrupar per font del complement ho fa més intuïtiu.
- Permisos de rolNomés s'analitzaran els codis curts dels comentaris de l'administrador; els codis curts dels comentaris dels usuaris normals mostraran el missatge "Aquest codi curt només està disponible per a administradors".
<?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);
总结
Les seccions de comentaris de WordPress no analitzen les abreviatures per defecte per motius de seguretat i rendiment. Podeu utilitzar [l'eina d'anàlisi] en comptes d'això. functions.php Afegeix un filtre per habilitar codis curts i combina'l amb la seguretat.
Bloc d'Hope Chen Weiliang ( https://www.chenweiliang.com/ L'article "Motius i solucions per a problemes d'anàlisi de shortcode a la secció de comentaris de WordPress" que es comparteix aquí us pot ser útil.
Benvingut a compartir l'enllaç d'aquest article:https://www.chenweiliang.com/cwl-34132.html
