வேர்ட்பிரஸ் கருத்துப் பகுதி ஷார்ட்கோடுகள் பகுப்பாய்வு செய்யப்படாததற்கான காரணங்களும் தீர்வுகளும்

வேர்ட்பிரஸ் கட்டுரையின் கருத்துப் பகுதியில் பதிவிடவும் [shortcode]இருப்பினும், விரும்பிய விளைவுக்குப் பதிலாக, முடிவு வெறும் உரையாக மட்டும் காட்டப்படுகிறதா? இது உண்மையில் வேர்ட்பிரஸின் இயல்புநிலைச் செயல்முறையாகும். கீழே, அதற்கான காரணங்களை நான் முறையாகப் பகுப்பாய்வு செய்து, ஒரு முழுமையான தீர்வை வழங்குவேன்.

கருத்துப் பகுதி ஏன் குறுக்குக் குறியீடுகளை ஆதரிக்கவில்லை?

  • இயல்புநிலை கட்டுப்பாடுகள்
    பாதுகாப்புக் காரணங்களுக்காக, வேர்ட்பிரஸ் கருத்துகள் பகுதியில் தானாக இயங்காது. do_shortcode()தளத்தின் பாதுகாப்பைப் பாதிக்கக்கூடிய படிவங்கள், ஸ்கிரிப்டுகள் அல்லது பிற உள்ளடக்கங்களை பயனர்கள் தன்னிச்சையாகச் செருகுவதை இது தடுக்கிறது.

  • வரையறுக்கப்பட்ட பயன்பாட்டு வரம்பு
    இந்தச் சுருக்கம் முக்கியமாக கட்டுரை உள்ளடக்கத்தில் பயன்படுத்துவதற்காக வடிவமைக்கப்பட்டுள்ளது.the_contentஇதில் கேட்ஜெட்கள் அல்லது குறிப்பிட்ட செருகுநிரல்கள் அடங்கும், அதே சமயம் கருத்துப் பிரிவு இயல்பாக ஆதரிக்கப்படுவதில்லை.

  • தானியங்கி வடிவமைப்பு குறுக்கீடு
    கருத்துரை உரை பின்வருமாறு இருக்கும் wpautop தானாகச் சேர்க்கவும் <p><br> குறிச்சொற்கள், குறுங்குறியீடுகளின் தொடரியல் கட்டமைப்பைச் சிதைத்து, அவற்றை பகுப்பாய்வு செய்ய முடியாததாக ஆக்கக்கூடும்.

வேர்ட்பிரஸ் கருத்துப் பகுதி ஷார்ட்கோடுகள் பகுப்பாய்வு செய்யப்படாததற்கான காரணங்களும் தீர்வுகளும்

செயலாக்கம்...

கருத்துகளுக்கு ஷார்ட்கோட் ஆதரவை நான் எப்படி இயக்குவது?

  • கருத்து குறுக்குக் குறியீடுகளை இயக்கு
    தலைப்பு குறித்து functions.php பின்வரும் குறியீட்டை உங்கள் கோப்பில் அல்லது குறியீட்டுத் துணுக்கு செருகுநிரலில் சேர்க்கவும்:

    add_filter('comment_text', 'do_shortcode');
    

    இதனால், கருத்துகள் பகுதி குறுக்குக் குறியீடுகளைப் பயன்படுத்தும்.

  • செருகுநிரல் செயல்படுத்தப்பட்டுள்ளதா எனச் சரிபார்க்கவும்.
    பல ஷார்ட்கோடுகள் (குறுக்குக் குறியீடுகள்) காண்டாக்ட் ஃபார்ம் 7 மற்றும் வூகாமர்ஸ் போன்ற பிளகின்களிலிருந்து வருகின்றன. பிளகின் இயக்கப்படவில்லை என்றால், ஷார்ட்கோடுகள் செயல்படாது.

  • தொடரியல் பிழைகளைத் தவிர்க்கவும்
    சுருக்கம் சரியாக எழுதப்பட்டுள்ளதா என்பதை உறுதிப்படுத்தவும், எடுத்துக்காட்டாக:

    [shortcode attribute="value"]内容[/shortcode]
    
  • தீம் அல்லது பிளகின் முரண்பாடுகளைச் சரிபார்க்கவும்
    இயல்புநிலை தீமிற்கு (ட்வென்டி ட்வென்டி-ஃபைவ் போன்றது) மாறி, ஷார்ட்கோடு செயலிழக்கக் காரணமாகும் ஏதேனும் முரண்பாடுகள் உள்ளதா என்பதைச் சோதித்து உறுதிப்படுத்த, ஒவ்வொரு செருகுநிரலையும் ஒவ்வொன்றாக முடக்கவும்.

  • தெளிவான தற்காலிக சேமிப்பு
    கேச்சிங் பிளகின்கள் அல்லது CDN-களைப் பயன்படுத்தும்போது, ​​பிழைதிருத்தத்தின் விளைவைக் காண, அதன்பிறகு நீங்கள் கேஷை அழிக்க வேண்டும்.

கருத்துப் பகுதி குறுக்குக் குறியீடுகளைப் பாதுகாப்பாக இயக்குவதற்கான குறியீடு

பாதுகாப்பு அபாயங்களைத் தவிர்க்க, பின்வருவனவற்றைச் செய்வது சாத்தியமாகும்: functions.php பின்வரும் முழுமையான உதாரணத்தைச் சேர்க்கவும்:

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

குறியீடு விளக்கம்

  • குறுக்குக் குறியீடுகளை இயக்குமுதல் வரி add_filter('comment_text', 'do_shortcode'); கருத்துகள் பகுதியில் குறுங்குறியீடு ஆதரவைச் செயல்படுத்துங்கள்.
  • கட்டுப்படுத்தப்பட்ட குறுக்கு குறியீடுகள்: பாஸ் $allowed_shortcodes அணி வரையறைகள் சுருக்கங்களை அனுமதிக்கின்றன, எடுத்துக்காட்டாக gallery,audio,video,contact-form-7,su_posts.
  • பாதுகாப்பு கைப்பிடிஅனுமதிக்கப்பட்ட பட்டியலில் இல்லாத ஒரு ஷார்ட்கோடை பயனர் உள்ளிட்டால், அபாயகரமான ஷார்ட்கோடுகள் செயல்படுத்தப்படுவதைத் தவிர்ப்பதற்காக, அந்தக் குறியீடு தானாகவே சாதாரண உரையாக மாற்றப்படும்.

சிறந்த நடைமுறைகள்

  • தேவையான குறுக்குக் குறியீடுகளை மட்டும் அனுமதிக்கவும்உதாரணமாக, ஊடக விளக்கக்காட்சிகள் அல்லது படிவங்களில், அதிகப்படியான குறுக்குக் குறியீடுகளைப் பயன்படுத்துவதைத் தவிர்க்கவும்.
  • பிளகின் புதுப்பிப்புகளைத் தவறாமல் சரிபார்க்கவும்ஷார்ட்கோட் சோர்ஸ் பிளகின் பாதுகாப்பானதாகவும் நம்பகமானதாகவும் இருப்பதை உறுதிசெய்யுங்கள்.
  • கேச்சிங் மற்றும் பாதுகாப்பு செருகுநிரல்களை இணைத்தல்ஷார்ட்கோட் ரெண்டரிங்கால் ஏற்படும் செயல்திறன் அழுத்தத்தைத் தவிர்க்க.

மேம்படுத்தப்பட்ட பதிப்பு: பின்தள அமைப்புகள் இடைமுகம் (தேடல் + குழுவாக்கம் + முன்பக்கக் குறிப்புகள்)

உங்களுக்குக் கூடுதல் நெகிழ்வுத்தன்மை தேவைப்பட்டால், பின்வரும் மேம்படுத்தப்பட்ட குறியீட்டைப் பயன்படுத்தலாம்:

  • பதிவுசெய்யப்பட்ட அனைத்து ஷார்ட்கோடுகளையும் தானாகவே பட்டியலிடுங்கள்(பிளகின்கள் வழங்குபவை உட்பட).
  • தனிப்பயன் குறுக்குக் குறியீடுகளை உள்ளிடுவதை ஆதரிக்கிறது(சரி) ).
  • தேடல் பெட்டிவேகமாகநிலைப்படுத்தல்சுருக்கம்.
  • குழுவாக்கப்பட்ட காட்சிபிளகின் மூலத்தின் அடிப்படையில் குழுவாக்குவது, புரிந்துகொள்வதற்கு மிகவும் எளிதாக்குகிறது.
  • பங்கு அனுமதிகள்நிர்வாகி கருத்துகளில் உள்ள குறுங்குறியீடுகள் மட்டுமே பகுப்பாய்வு செய்யப்படும்; சாதாரண பயனர் கருத்துகளில் உள்ள குறுங்குறியீடுகள், "இந்தக் குறுங்குறியீடு நிர்வாகிகளுக்கு மட்டுமே உரியது" என்ற செய்தியைக் காண்பிக்கும்.
<?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);

总结

பாதுகாப்பு மற்றும் செயல்திறன் காரணங்களுக்காக, வேர்ட்பிரஸ் கருத்துப் பிரிவுகள் இயல்பாகவே சுருக்கெழுத்துக்களைப் பகுப்பாய்வு செய்வதில்லை. அதற்குப் பதிலாக நீங்கள் [பகுப்பாய்வுக் கருவியை] பயன்படுத்தலாம். functions.php ஷார்ட்கோடுகளை இயக்க ஒரு வடிப்பானைச் சேர்த்து, அதை பாதுகாப்புடன் இணைக்கவும்.

ஹோப் சென் வெலியாங் வலைப்பதிவு ( https://www.chenweiliang.com/ இங்கு பகிரப்பட்டுள்ள "வேர்ட்பிரஸ் கருத்துப் பிரிவு குறுக்குக்குறிப் பகுப்பாய்வுச் சிக்கல்களுக்கான காரணங்களும் தீர்வுகளும்" என்ற கட்டுரை உங்களுக்குப் பயனுள்ளதாக இருக்கலாம்.

இந்தக் கட்டுரையின் இணைப்பைப் பகிர வரவேற்கிறோம்:https://www.chenweiliang.com/cwl-34132.html

மேலும் மறைக்கப்பட்ட தந்திரங்களைத் திறக்க🔑, எங்கள் டெலிகிராம் சேனலில் சேர வரவேற்கிறோம்!

பிடித்திருந்தால் லைக் செய்து பகிருங்கள்! உங்களின் ஷேர்களும் லைக்குகளும் எங்களின் தொடர் உந்துதலாகும்!

 

发表 评论

உங்கள் மின்னஞ்சல் முகவரி வெளியிடப்படாது. தேவையான புலங்கள் பயன்படுத்தப்படுகின்றன * லேபிள்

டாப் உருட்டு