Adhbharan agus fuasglaidhean airson nach eil còdan goirid earrann bheachdan WordPress gan parsadh

Ann WordPress Cuir a-steach ann an earrann bheachdan an artaigil [shortcode]Ach, nach eil an toradh a’ taisbeanadh ach teacsa lom an àite a’ bhuaidh a tha thu ag iarraidh? ​​Is e seo an dòigh-obrach bunaiteach aig WordPress. Gu h-ìosal, nì mi sgrùdadh siostamach air na h-adhbharan agus bheir mi seachad fuasgladh coileanta.

Carson nach eil an earrann bheachdan a’ toirt taic do chòdan goirid?

  • Cuingealachaidhean bunaiteach
    Air adhbharan tèarainteachd, chan eil WordPress ag obair gu fèin-ghluasadach anns an earrann bheachdan. do_shortcode()Tha seo a’ cur casg air luchd-cleachdaidh bho bhith a’ cur foirmean, sgriobtaichean no susbaint eile a-steach gun fhiosta a dh’ fhaodadh buaidh a thoirt air tèarainteachd na làraich.

  • Raon tagraidh cuibhrichte
    Tha an giorrachadh air a dhealbhadh sa mhòr-chuid airson a chleachdadh ann an susbaint artaigil (the_contentTha seo a’ gabhail a-steach innealan no plugain sònraichte, agus chan eil taic ri fhaighinn airson an earrann bheachdan gu bunaiteach.

  • Bacadh cruth fèin-ghluasadach
    Bidh teacsa a’ bheachd wpautop Cuir ris gu fèin-ghluasadach <p><br> Tagaichean, a dh’ fhaodadh structar co-chàradh chòdan goirid a bhriseadh, gan dèanamh do-dhèanta a pharsadh.

Adhbharan agus fuasglaidhean airson nach eil còdan goirid earrann bheachdan WordPress gan parsadh

Giullachd...

Ciamar as urrainn dhomh taic còd goirid a chomasachadh airson beachdan?

  • Cuir còdan goirid air dòigh airson beachdan
    Air a’ chuspair functions.php Cuir an còd a leanas ris an fhaidhle no ris a’ plugan criomag còd agad:

    add_filter('comment_text', 'do_shortcode');
    

    Bheir seo air an earrann bheachdan còdan goirid a chleachdadh.

  • Thoir sùil a bheil am plugan air a ghnìomhachadh.
    Tha mòran de na còdan goirid a’ tighinn bho plugins (leithid Contact Form 7 agus WooCommerce). Mura h-eil am plugan air a chomasachadh, cha bhith na còdan goirid ag obair.

  • Seachain mearachdan co-chàradh
    Dearbhaich gu bheil an giorrachadh sgrìobhte gu ceart, mar eisimpleir:

    [shortcode attribute="value"]内容[/shortcode]
    
  • Thoir sùil airson còmhstri eadar cuspairean no plugins
    Gluais chun chuspair bunaiteach (leithid Twenty Twenty-Five), cuir dheth gach plugan aon às dèidh a chèile gus deuchainn a dhèanamh agus dearbhadh a bheil còmhstri sam bith ann a dh’ adhbhraicheas fàilligeadh anns a’ chòd ghoirid.

  • tasgadan soilleir
    Nuair a bhios tu a’ cleachdadh plugins tasgadan no CDNan, feumaidh tu an tasgadan a ghlanadh às dèidh an càraidh gus a’ bhuaidh fhaicinn.

Còd gus còdan goirid earrann bheachdan a chomasachadh gu tèarainte

Gus cunnartan tèarainteachd a sheachnadh, tha e comasach functions.php Cuir ris an eisimpleir slàn a leanas:

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

tuairisgeul còd

  • Cuir còdan goirid an comasA’ chiad loidhne add_filter('comment_text', 'do_shortcode'); Cuir taic ri còdan goirid an gnìomh anns an earrann bheachdan.
  • Còdan Goirid Cuingealaichte: pas $allowed_shortcodes Leigidh mìneachaidhean sreathan le giorrachaidhean, mar eisimpleir gallery,audio,video,contact-form-7,su_posts.
  • Làimhseachadh sàbhailteachdMa chuireas an neach-cleachdaidh còd goirid a-steach nach eil air an liosta cheadaichte, thèid an còd a thionndadh gu teacsa lom gu fèin-ghluasadach gus casg a chuir air còdan goirid a dh’ fhaodadh a bhith cunnartach a chur an gnìomh.

最佳实践

  • Na leig ach còdan goirid riatanachMar eisimpleir, ann an taisbeanaidhean no foirmean nam meadhanan, seachain cus chòdan goirid a chleachdadh.
  • Thoir sùil gu cunbhalach airson ùrachaidhean plugainDèan cinnteach gu bheil am plugan tùsail còd goirid sàbhailte agus earbsach.
  • A’ cothlamadh plugins tasgadan is dìonGus an cuideam coileanaidh air adhbhrachadh le bhith a’ lìbhrigeadh còd goirid a sheachnadh.

Tionndadh Leasaichte gu Dinimigeach: Eadar-aghaidh Roghainnean Cùil (Rannsachadh + Buidhneachadh + Molaidhean Aghaidh)

Ma tha thu ag iarraidh barrachd sùbailteachd, faodaidh tu an còd leasaichte a leanas a chleachdadh:

  • Liostaich gu fèin-ghluasadach na còdan goirid clàraichte uile(A’ gabhail a-steach an fheadhainn a tha air an toirt seachad le plugins).
  • A’ toirt taic do bhith a’ cur a-steach còdan goirid gnàthaichte(mar ).
  • bogsa rannsachaidhluathSuidheachadhGiorrachadh.
  • Taisbeanadh buidhneichteTha buidhnean a rèir stòr plugan ga dhèanamh nas intuitive.
  • Ceadan DreuchdCha tèid ach còdan goirid ann am beachdan rianadair a pharsadh; nochdaidh còdan goirid ann am beachdan cleachdaiche àbhaisteach an teachdaireachd “Chan eil an còd goirid seo ri fhaighinn ach do rianadairean”.
<?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);

gu suim

Chan eil earrannan bheachdan WordPress a’ dèanamh parsadh air giorrachaidhean gu bunaiteach airson adhbharan tèarainteachd agus coileanaidh. Faodaidh tu [an inneal parsaidh] a chleachdadh na àite. functions.php Cuir criathrag ris gus còdan goirid a chomasachadh agus a chur còmhla ri tèarainteachd.

发表 评论

Cha tèid do sheòladh puist-d fhoillseachadh. 必填 项 已 用 * Label

Rach gu mhullaich