Zvikonzero nemhinduro dzemashortcode echikamu chemashoko eWordPress asiri kutsanangurwa

mu WordPress Pinda muchikamu chemashoko chechinyorwa [shortcode]Zvisinei, mhedzisiro yacho inoratidza chete rugwaro rwakajeka pane mhedzisiro yaunoda? Iyi ndiyo nzira yakajairika yeWordPress. Pazasi, ndichaongorora zvikonzero zvacho nenzira yakarongwa uye ndopa mhinduro yakazara.

Sei chikamu chemashoko chisingatsigire ma shortcode?

  • Mitemo yagara iripo
    Nekuda kwezvikonzero zvekuchengetedza, WordPress haishande yega muchikamu chemashoko. do_shortcode()Izvi zvinodzivirira vashandisi kuti vasaise mafomu, zvinyorwa, kana zvimwe zvinhu zvinogona kukanganisa kuchengetedzeka kwewebsite.

  • Kushandiswa kushoma
    Chidimbu chakagadzirirwa kushandiswa zvakanyanya muzvinyorwa (the_contentIzvi zvinosanganisira magadget kana maplugins chaiwo, nepo chikamu chemashoko chisingatsigirwi nehurongwa hwekare.

  • Kupindira kwekugadzirisa otomatiki
    Rugwaro rwemashoko ruchava wpautop Wedzera otomatiki <p> uye <br> Matagi, anogona kutyora chimiro chemazwi e shortcodes, zvichiita kuti asakwanise kunzwisiswa.

Zvikonzero nemhinduro dzemashortcode echikamu chemashoko eWordPress asiri kutsanangurwa

Kugadzirisa...

Ndingagonesa sei rutsigiro rwe shortcode kune makomendi?

  • Bvumira makodhi mapfupi ekutaura
    Pamusoro penyaya iyi functions.php Wedzera kodhi inotevera kune yako faira kana kodhi snippet plugin:

    add_filter('comment_text', 'do_shortcode');
    

    Izvi zvichaita kuti chikamu chemashoko chishandise ma shortcode.

  • Tarisa kana plugin yave kushanda.
    Makodhi mapfupi mazhinji anobva kuma plugins (akadai se Contact Form 7 ne WooCommerce). Kana plugin isina kuvhurwa, makodhi mapfupi haashande.

  • Dzivisa zvikanganiso zvemaumbirwo
    Ndapota simbisai kuti chidimbu chakanyorwa nemazvo, semuenzaniso:

    [shortcode attribute="value"]内容[/shortcode]
    
  • Tarisa kana paine kusawirirana kwemusoro wenyaya kana plugin
    Chinja ushandise dingindira rekare (rakaita seTwenty Twenty-Five), dzima plugin yega yega kuti uedze uye usimbise kana paine kusawirirana kunokonzera kuti shortcode isashande zvakanaka.

  • bvisa cache
    Paunenge uchishandisa maplugins ekuchengetedza kana maCDN, unofanirwa kubvisa cache mushure mekugadzirisa kuti uone mhedzisiro yacho.

Kodhi yekugonesa makodhi mapfupi echikamu chemashoko zvakachengeteka

Kuti tidzivise njodzi dzekuchengetedza, zvinokwanisika functions.php Wedzera muenzaniso unotevera wakazara:

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

tsananguro yekodhi

  • Bvumira ma shortcodeMutsetse wekutanga add_filter('comment_text', 'do_shortcode'); Bvumira rutsigiro rwe shortcode muchikamu chemashoko.
  • Makodhi mapfupi akaganhurirwa:pfuura $allowed_shortcodes Tsanangudzo dzeArray dzinobvumira zvipfupiso, semuenzaniso gallery,audio,video,contact-form-7,su_posts.
  • Kubata zvekuchengetedzaKana mushandisi akaisa shortcode isiri pane zvinotenderwa, kodhi yacho inongoerekana yabuda mumashoko asina chinhu kuti isashandise shortcode dzine njodzi.

Maitiro Akanakisisa

  • Bvumira ma shortcode anodiwa cheteSemuenzaniso, muzvirongwa zvenhau kana mafomu, dzivisa kushandisa mashortcode akawandisa.
  • Gara uchitarisa kana paine zvigadziriso zvepluginIva nechokwadi chekuti shortcode source plugin yakachengeteka uye yakavimbika.
  • Kusanganisa caching uye dziviriro pluginsKudzivirira kumanikidzwa kwekushanda kunokonzerwa nekushandurwa kwekodhi pfupi.

Shanduro Yakavandudzwa Zvikuru: Interface yeBackend Settings (Tsvaga + Kuisa Mapoka + Mazano Epamberi)

Kana uchida kushanduka-shanduka, unogona kushandisa kodhi inotevera yakawedzerwa:

  • Nyora otomatiki ma shortcode ese akanyoreswa(Kusanganisira izvo zvinopihwa nema plugins).
  • Inotsigira kuisa ma shortcode akajairwa(sa )。
  • bhokisi rekutsvaga:kukurumidzaPositioningKupfupikiswa.
  • Kuratidzwa kwakabatanidzwaKuisa plugin mumapoka zvichienderana nekwakabva plugin kunoita kuti zvive nyore kunzwisisa.
  • Mvumo dzeMabasaMakodhi mapfupi chete ari mumashoko emutariri achaongororwa; makodhi mapfupi ari mumashoko evashandisi venguva dzose acharatidza meseji inoti "Kodhi iyi pfupi inowanikwa chete kune vatungamiriri".
<?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);

kupfupikisa

Zvikamu zvemashoko zveWordPress hazvitsanangurike nemaoko nekuda kwezvikonzero zvekuchengetedza uye mashandiro. Unogona kushandisa [chishandiso chekuongorora]. functions.php Wedzera firita kuti ugone kushandisa ma shortcode uye uisanganise ne security.

发表 评论

Yako email kero haizoburitswa. Minda inodiwa inoshandiswa * Chitaera

Mupumburu TOP