Awọn idi ati awọn ojutu fun apakan asọye WordPress ti a ko ṣe itupalẹ awọn koodu kukuru

Ninu WordPress Tẹ si apakan asọye ti nkan naa [shortcode]Sibẹsibẹ, abajade naa fihan ọrọ lasan nikan dipo ipa ti o fẹ? Eyi ni ilana aiyipada ti WordPress. Ni isalẹ, Emi yoo ṣe itupalẹ awọn idi ni eto ati pese ojutu pipe.

Kí ló dé tí apá àkíyèsí kò fi ṣe àtìlẹ́yìn fún àwọn kúrọ̀kúrú?

  • Awọn ihamọ aiyipada
    Fún ààbò, WordPress kò ṣiṣẹ́ láìfọwọ́sí nínú abala àkíyèsí. do_shortcode()Èyí ń dènà àwọn olùlò láti má ṣe fi àwọn fọ́ọ̀mù, ìwé àfọwọ́kọ, tàbí àwọn àkóónú mìíràn tí ó lè ní ipa lórí ààbò ojú-òpó wẹ́ẹ̀bù láìnídìí.

  • Ààlà ìlò tó lopin
    A ṣe àgbékalẹ̀ ìkékúrú náà fún lílò nínú àkóónú àpilẹ̀kọ (the_contentÈyí ní àwọn ẹ̀rọ ìbánisọ̀rọ̀ tàbí àwọn afikún pàtó nínú, nígbàtí a kò ṣe àtìlẹ́yìn fún apá àkíyèsí nípasẹ̀ àìyípadà.

  • Ìdènà ìṣètò àdánidá
    Ọ̀rọ̀ àkíyèsí náà yóò jẹ́ wpautop Fi kun laifọwọsi <p><br> Àwọn àmì, èyí tí ó lè ba ìṣètò ìkọ̀wé àwọn kúrúkúrú jẹ́, tí ó sì lè mú kí wọn má ṣeé ṣàtúpalẹ̀.

Awọn idi ati awọn ojutu fun apakan asọye WordPress ti a ko ṣe itupalẹ awọn koodu kukuru

Ṣíṣe àgbékalẹ̀...

Báwo ni mo ṣe le mu atilẹyin koodu kukuru ṣiṣẹ fun awọn asọye?

  • Mu awọn koodu kukuru asọye ṣiṣẹ
    Lórí kókó ọ̀rọ̀ náà functions.php Fi koodu atẹle yii kun si afikun faili tabi koodu snippet rẹ:

    add_filter('comment_text', 'do_shortcode');
    

    Èyí yóò mú kí apá àkíyèsí lo àwọn kúrọ̀kúrú.

  • Ṣàyẹ̀wò bóyá a ti mu àfikún náà ṣiṣẹ́.
    Ọ̀pọ̀lọpọ̀ àwọn kódì kúkúrú ló wá láti inú àwọn àfikún (bíi Fọ́ọ̀mù Ìbáṣepọ̀ 7 àti WooCommerce). Tí a kò bá ṣiṣẹ́ àfikún kúkúrú náà, àwọn kódì kúkúrú náà kò ní ṣiṣẹ́.

  • Yẹra fún àwọn àṣìṣe sísopọ̀
    Jọ̀wọ́ fìdí rẹ̀ múlẹ̀ pé a kọ ìkékúrú náà dáadáa, fún àpẹẹrẹ:

    [shortcode attribute="value"]内容[/shortcode]
    
  • Ṣàyẹ̀wò fún àwọn ìforígbárí àkòrí tàbí àwọn àfikún
    Yípadà sí àkọlé àìyípadà (bíi Twenty Twenty-Five), pa àfikún kọ̀ọ̀kan mọ́ lẹ́ẹ̀kan láti dán wò kí o sì fìdí rẹ̀ múlẹ̀ bóyá àwọn ìforígbárí kan wà tí ó ń fa àṣìṣe nínú koodu kúkúrú náà.

  • ko o kaṣe
    Nígbà tí o bá ń lo àwọn afikún caching tàbí CDNs, o nílò láti pa cache náà rẹ́ lẹ́yìn àtúnṣe náà láti rí ipa rẹ̀.

Kóòdù láti mú kí àwọn kúrúkúrú abala àkíyèsí ṣiṣẹ́ láìsí ewu

Lati yago fun awọn ewu aabo, o ṣee ṣe lati functions.php Fi àpẹẹrẹ pípé tó tẹ̀lé yìí kún un:

<?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);

koodu apejuwe

  • Mu awọn koodu kukuru ṣiṣẹÌlà àkọ́kọ́ add_filter('comment_text', 'do_shortcode'); Mu atilẹyin koodu kukuru ṣiṣẹ ni apakan awọn asọye.
  • Àwọn kódì kúkúrú tí a ti dínkù:kọja $allowed_shortcodes Àwọn ìtumọ̀ ìṣètò àkójọpọ̀ gba ààyè fún àwọn kúrúkúrú, fún àpẹẹrẹ gallery,audio,video,contact-form-7,su_posts,
  • Isakoso aaboTí olùlò bá tẹ koodu kukuru kan tí kò sí nínú àkójọ tí a gbà láàyè, a ó fi koodu naa sáré sí ọ̀rọ̀ lásán láti yẹra fún ṣíṣe àwọn koodu kukuru tí ó lè léwu.

Awọn iṣe ti o dara julọ

  • Gba awọn koodu kukuru ti o yẹ laaye nikanFún àpẹẹrẹ, nínú àwọn ìgbéjáde tàbí àwọn fọ́ọ̀mù ìròyìn, yẹra fún lílo ọ̀pọ̀ àwọn kódì kúkúrú.
  • Ṣe àyẹ̀wò déédéé fún àwọn àtúnṣe afikúnRí i dájú pé àfikún orísun koodu kúkúrú náà jẹ́ ààbò àti ìgbẹ́kẹ̀lé.
  • Dapọ awọn afikun caching ati aaboLáti yẹra fún ìfúnpá iṣẹ́ tí ìṣeré ìkọ́kọ́ tí ó jẹ́yọ.

Ẹ̀yà tí a ti mú dara síi: Ìfọwọ́sowọ́pọ̀ Ètò Ẹ̀yìn (Wíwá + Ṣíṣe àkójọpọ̀ + Àwọn àmọ̀ràn iwájú)

Ti o ba fẹ irọrun diẹ sii, o le lo koodu ti a ti mu dara si wọnyi:

  • Ṣe àkójọ gbogbo àwọn kúrọ̀dì tí a forúkọ sílẹ̀ láìfọwọ́sí(Pẹ̀lú àwọn tí àwọn afikún pèsè).
  • Ṣe atilẹyin fun titẹ awọn koodu kukuru aṣa sii(如 )。?
  • àpótí ìwárí:yaraIpoÀkótán.
  • Ifihan akojọpọṢíṣe àkójọpọ̀ nípasẹ̀ orísun plugin mú kí ó rọrùn láti lóye.
  • Awọn igbanilaaye ipaÀwọn kódù kúkúrú nínú àwọn àkíyèsí olùṣàkóso nìkan ni a óò ṣàtúpalẹ̀; àwọn kódù kúkúrú nínú àwọn àkíyèsí olùlò déédéé yóò fi ìránṣẹ́ náà hàn pé "Kóòdù kúkúrú yìí wà fún àwọn olùṣàkóso nìkan".
<?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);

lati akopọ

Àwọn abala àkíyèsí WordPress kìí ṣe àgbéyẹ̀wò kúkúrú nípa àìṣeédá fún ààbò àti ìdí ìṣe. O lè lo [irinṣẹ́ àgbéyẹ̀wò] dípò. functions.php Fi àlẹ̀mọ́ kan kún un láti mú kí àwọn kódì kúkúrú ṣiṣẹ́ kí o sì so ó pọ̀ mọ́ ààbò.

发表 评论

Adirẹsi imeeli rẹ kii yoo ṣe atẹjade. Awọn aaye ti o nilo ni a lo * 标注

Yi lọ si Top