Katalog artykułów
- 1 Dlaczego sekcja komentarzy nie obsługuje krótkich kodów?
- 2 Jak włączyć obsługę krótkich kodów dla komentarzy?
- 3 Kod umożliwiający bezpieczne włączenie krótkich kodów w sekcji komentarzy
- 4 Najlepsze praktyki
- 5 Wersja dynamicznie ulepszona: Interfejs ustawień zaplecza (wyszukiwanie + grupowanie + wskazówki dla użytkownika)
- 6 podsumowując
在 WordPress Wpisz swoją opinię w sekcji komentarzy do artykułu [shortcode]Jednak wynik wyświetla tylko zwykły tekst zamiast pożądanego efektu? To jest w rzeczywistości domyślny mechanizm WordPressa. Poniżej systematycznie przeanalizuję przyczyny i przedstawię kompletne rozwiązanie.
Dlaczego sekcja komentarzy nie obsługuje krótkich kodów?
Ograniczenia domyślne
Ze względów bezpieczeństwa WordPress nie uruchamia się automatycznie w sekcji komentarzy.do_shortcode()Zapobiega to przypadkowemu umieszczaniu przez użytkowników formularzy, skryptów lub innej treści, która może mieć wpływ na bezpieczeństwo witryny.Ograniczony zakres zastosowania
Skrót ten jest przeznaczony głównie do stosowania w treści artykułów (the_contentDotyczy to gadżetów i konkretnych wtyczek, natomiast sekcja komentarzy nie jest domyślnie obsługiwana.Automatyczne formatowanie zakłóceń
Tekst komentarza będzie następujący:wpautopDodaj automatycznie<p>I<br>Tagi, które mogą zaburzyć strukturę składniową krótkich kodów, czyniąc je niemożliwymi do przeanalizowania.

Jak włączyć obsługę krótkich kodów dla komentarzy?
Włącz krótkie kody komentarzy
Na tematfunctions.phpDodaj następujący kod do swojego pliku lub wtyczki fragmentu kodu:add_filter('comment_text', 'do_shortcode');Spowoduje to, że sekcja komentarzy będzie używać krótkich kodów.
Sprawdź czy wtyczka jest aktywowana.
Wiele krótkich kodów pochodzi z wtyczek (takich jak Contact Form 7 i WooCommerce). Jeśli wtyczka nie jest włączona, krótkie kody nie będą działać.Unikaj błędów składniowych
Proszę potwierdzić, że skrót jest napisany poprawnie, na przykład:[shortcode attribute="value"]内容[/shortcode]Sprawdź, czy nie występują konflikty motywów lub wtyczek
Przełącz się na domyślny motyw (np. Twenty Twenty-Five) i wyłączaj po kolei wszystkie wtyczki, aby przetestować i potwierdzić, czy występują jakieś konflikty, które mogłyby spowodować nieprawidłowe działanie krótkiego kodu.Wyczyść pamięć podręczną
W przypadku korzystania z wtyczek buforujących lub sieci CDN, po zastosowaniu poprawki należy wyczyścić pamięć podręczną, aby zobaczyć efekt.
Kod umożliwiający bezpieczne włączenie krótkich kodów w sekcji komentarzy
Aby uniknąć zagrożeń bezpieczeństwa, możliwe jest functions.php Dodaj następujący kompletny przykład:
<?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);
opis kodu
- Włącz krótkie kodyPierwsza linia
add_filter('comment_text', 'do_shortcode');W sekcji komentarzy włącz obsługę krótkich kodów. - Ograniczone krótkie kody:przechodzić
$allowed_shortcodesDefinicje tablic umożliwiają stosowanie skrótów, na przykładgallery,audio,video,contact-form-7,su_posts. - Bezpieczeństwo obsługiJeśli użytkownik wprowadzi krótki kod, który nie znajduje się na liście dozwolonych, kod zostanie automatycznie zamieniony na zwykły tekst, aby zapobiec wykonywaniu potencjalnie niebezpiecznych krótkich kodów.
Najlepsze praktyki
- Zezwalaj tylko na niezbędne krótkie kodyNa przykład w prezentacjach multimedialnych lub formularzach należy unikać stosowania zbyt wielu krótkich kodów.
- Regularnie sprawdzaj dostępność aktualizacji wtyczekUpewnij się, że kod źródłowy wtyczki jest bezpieczny i niezawodny.
- Łączenie wtyczek buforujących i zabezpieczającychAby uniknąć spadku wydajności spowodowanego renderowaniem shortcode'u.
Wersja dynamicznie ulepszona: Interfejs ustawień zaplecza (wyszukiwanie + grupowanie + wskazówki dla użytkownika)
Jeśli zależy Ci na większej elastyczności, możesz skorzystać z następującego udoskonalonego kodu:
- Automatycznie wyświetl listę wszystkich zarejestrowanych krótkich kodów(W tym te dostarczane przez wtyczki).
- Obsługuje wprowadzanie niestandardowych krótkich kodów(lubić
)。 - pasek wyszukiwania:szybkoPozycjonowanieSkrót.
- Wyświetlanie grupoweGrupowanie według źródła wtyczki sprawia, że jest to bardziej intuicyjne.
- Uprawnienia roliAnalizowane będą tylko krótkie kody w komentarzach administratorów; krótkie kody w zwykłych komentarzach użytkowników będą wyświetlać komunikat „Ten krótki kod jest dostępny tylko dla administratorów”.
<?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);
podsumowując
Sekcje komentarzy w WordPressie domyślnie nie analizują składni skróconej ze względów bezpieczeństwa i wydajności. Zamiast tego możesz użyć [narzędzia do analizy składniowej]. functions.php Dodaj filtr, aby włączyć krótkie kody i połączyć je z zabezpieczeniami.
Nadzieja Chen Weiliang Blog ( https://www.chenweiliang.com/ Artykuł „Przyczyny i rozwiązania problemów z analizą krótkiego kodu sekcji komentarzy w WordPressie” udostępniony tutaj może Ci się przydać.
Zapraszamy do udostępnienia linku do tego artykułu:https://www.chenweiliang.com/cwl-34132.html
