Cúiseanna agus réitigh maidir le gearrchóid rannóg tráchta WordPress nach bhfuil á bparsáil

WordPress Cuir isteach sa chuid tuairimí ar an alt [shortcode]Ach an bhfuil téacs simplí amháin le feiceáil sa toradh seachas an éifeacht atá ag teastáil? Seo meicníocht réamhshocraithe WordPress i ndáiríre. Thíos, déanfaidh mé anailís chórasach ar na cúiseanna agus cuirfidh mé réiteach iomlán ar fáil.

Cén fáth nach dtacaíonn an chuid tuairimí le gearrchóid?

  • Srianta réamhshocraithe
    Ar chúiseanna slándála, ní ritheann WordPress go huathoibríoch sa chuid tuairimí. do_shortcode()Cuireann sé seo cosc ​​ar úsáideoirí foirmeacha, scripteanna nó ábhar eile a chur isteach go treallach a d’fhéadfadh dul i bhfeidhm ar shlándáil an tsuímh.

  • Raon feidhme teoranta
    Tá an giorrúchán ceaptha den chuid is mó lena úsáid in ábhar alt (the_contentÁirítear leis seo giuirléidí nó breiseáin shonracha, ach ní thacaítear leis an rannóg tuairimí de réir réamhshocraithe.

  • Cur isteach ar fhormáidiú uathoibríoch
    Beidh téacs an tráchta wpautop Cuir leis go huathoibríoch <p><br> Clibeanna, a d'fhéadfadh struchtúr comhréir na ngearrchód a bhriseadh, rud a fhágann nach féidir iad a pharsáil.

Cúiseanna agus réitigh maidir le gearrchóid rannóg tráchta WordPress nach bhfuil á bparsáil

Ag próiseáil...

Conas is féidir liom tacaíocht ghearrchóid a chumasú le haghaidh tuairimí?

  • Cumasaigh gearrchóid tráchta
    Ar an ábhar functions.php Cuir an cód seo a leanas le do chomhad nó le do bhreiseán sleachta cóid:

    add_filter('comment_text', 'do_shortcode');
    

    Cuirfidh sé seo faoi deara go n-úsáidfidh an rannóg tuairimí gearrchóid.

  • Seiceáil an bhfuil an breiseán gníomhachtaithe.
    Tagann go leor gearrchóid ó bhreiseáin (amhail Contact Form 7 agus WooCommerce). Mura bhfuil an breiseán cumasaithe, ní oibreoidh na gearrchóid.

  • Seachain earráidí comhréire
    Deimhnigh le do thoil go bhfuil an giorrúchán scríofa i gceart, mar shampla:

    [shortcode attribute="value"]内容[/shortcode]
    
  • Seiceáil le haghaidh coinbhleachtaí téama nó breiseán
    Athraigh go dtí an téama réamhshocraithe (amhail Twenty Twenty-Five), díchumasaigh gach breiseán ceann ar cheann chun tástáil a dhéanamh agus a dheimhniú an bhfuil aon choinbhleachtaí ann a fhágann go dteipeann ar an ngearrchód.

  • taisce soiléir
    Agus breiseáin taisceála nó CDNanna in úsáid agat, ní mór duit an taisce a ghlanadh tar éis an socraithe chun an éifeacht a fheiceáil.

Cód chun gearrchóid rannóg na dtuairimí a chumasú go slán

Chun rioscaí slándála a sheachaint, is féidir functions.php Cuir an sampla iomlán seo a leanas leis:

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

cur síos cód

  • Cumasaigh gearrchóidAn chéad líne add_filter('comment_text', 'do_shortcode'); Cumasaigh tacaíocht do ghearrchód sa chuid tuairimí.
  • Gearrchóid Srianta: pas $allowed_shortcodes Ceadaíonn sainmhínithe eagair giorrúcháin, mar shampla gallery,audio,video,contact-form-7,su_posts.
  • Láimhseáil sábháilteachtaMá chuireann an t-úsáideoir gearrchód isteach nach bhfuil ar an liosta ceadaithe, déanfar an cód a aistriú go huathoibríoch go téacs simplí chun gearrchóid a d'fhéadfadh a bheith contúirteach a sheachaint.

Cleachtais is Fearr

  • Ná ceadaigh ach gearrchóid riachtanachaMar shampla, i gcur i láthair nó i bhfoirmeacha meán, seachain an iomarca gearrchód a úsáid.
  • Seiceáil go rialta le haghaidh nuashonruithe breiseánCinntigh go bhfuil an breiseán foinse gearrchóid sábháilte agus iontaofa.
  • Ag comhcheangal breiseáin taisce agus cosantaChun an brú feidhmíochta de bharr rindreáil gearrchóid a sheachaint.

Leagan Feabhsaithe go Dinimiciúil: Comhéadan Socruithe Cúil (Cuardach + Grúpáil + Leideanna Tosaigh)

Más mian leat níos mó solúbthachta, is féidir leat an cód feabhsaithe seo a leanas a úsáid:

  • Liostaigh go huathoibríoch na gearrchóid chláraithe go léir(Lena n-áirítear iad siúd a sholáthraíonn breiseáin).
  • Tacaíonn sé le gearrchóid saincheaptha a ionchur(如 )。
  • bosca cuardaigh:tapaSuíomhGiorrúchán.
  • Taispeántas grúpáilteDéanann grúpáil de réir foinse breiseán níos iomasach é.
  • Ceadanna RóilNí dhéanfar ach cóid ghearra i dtuairimí riarthóra a pharsáil; taispeánfar an teachtaireacht "Níl an cód gearr seo ar fáil ach do riarthóirí" i gcóid ghearra i dtuairimí rialta úsáideoirí.
<?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);

总结

Ní dhéanann rannóga tráchta WordPress parsáil giorrúcháin de réir réamhshocraithe ar chúiseanna slándála agus feidhmíochta. Is féidir leat [an uirlis parsála] a úsáid ina ionad. functions.php Cuir scagaire leis chun gearrchóid a chumasú agus é a chomhcheangal le slándáil.

Tá súil agam Blag Chen Weiliang ( https://www.chenweiliang.com/ D’fhéadfadh an t-alt "Cúiseanna agus Réitigh le haghaidh Fadhbanna Parsála Gearrchóid Rannóg Trácht WordPress" atá roinnte anseo a bheith ina chuidiú duit.

Fáilte romhat nasc an ailt seo a roinnt:https://www.chenweiliang.com/cwl-34132.html

Chun níos mó cleasanna ceilte a dhíghlasáil🔑, fáilte romhat páirt a ghlacadh inár gcainéal Telegram!

Roinn agus maith más maith leat é! Is iad do chuid scaireanna agus rudaí is maith leat ár spreagadh leanúnach!

 

发表 评论

Ní fhoilseofar do sheoladh ríomhphoist. Úsáidtear réimsí riachtanacha * Lipéad

Scrollaigh go dtí an Barr