آرٹیکل ڈائرکٹری
میں WordPress مضمون کے تبصرے کے سیکشن میں درج کریں۔ [shortcode]تاہم، نتیجہ مطلوبہ اثر کے بجائے صرف سادہ متن دکھاتا ہے؟ یہ دراصل ورڈپریس کا ڈیفالٹ میکانزم ہے۔ ذیل میں، میں منظم طریقے سے وجوہات کا تجزیہ کروں گا اور ایک مکمل حل فراہم کروں گا۔
تبصرہ سیکشن شارٹ کوڈز کی حمایت کیوں نہیں کرتا؟
پہلے سے طے شدہ پابندیاں
سیکورٹی وجوہات کی بنا پر، ورڈپریس تبصرے کے سیکشن میں خود بخود نہیں چلتا ہے۔do_shortcode()یہ صارفین کو من مانے طریقے سے فارمز، اسکرپٹس، یا دیگر مواد داخل کرنے سے روکتا ہے جو سائٹ کی سیکیورٹی کو متاثر کر سکتا ہے۔درخواست کا محدود دائرہ کار
مخفف بنیادی طور پر مضمون کے مواد میں استعمال کے لیے ڈیزائن کیا گیا ہے (the_contentاس میں گیجٹس یا مخصوص پلگ ان شامل ہیں، جبکہ تبصرہ سیکشن ڈیفالٹ کے ذریعے تعاون یافتہ نہیں ہے۔خودکار فارمیٹنگ مداخلت
تبصرہ کا متن ہو گا۔wpautopخود بخود شامل کریں۔<p>和<br>ٹیگز، جو شارٹ کوڈز کے نحوی ڈھانچے کو توڑ سکتے ہیں، ان کو ناقابل تجزیہ بنا سکتے ہیں۔

میں تبصروں کے لیے شارٹ کوڈ سپورٹ کو کیسے فعال کر سکتا ہوں؟
تبصرہ شارٹ کوڈز کو فعال کریں۔
موضوع پرfunctions.phpدرج ذیل کوڈ کو اپنی فائل یا کوڈ اسنیپٹ پلگ ان میں شامل کریں:add_filter('comment_text', 'do_shortcode');اس سے تبصرے کے سیکشن میں شارٹ کوڈز استعمال ہوں گے۔
چیک کریں کہ آیا پلگ ان ایکٹیویٹ ہے۔
بہت سے شارٹ کوڈ پلگ ان سے آتے ہیں (جیسے رابطہ فارم 7 اور WooCommerce)۔ اگر پلگ ان فعال نہیں ہے تو، شارٹ کوڈز کام نہیں کریں گے۔نحوی غلطیوں سے بچیں۔
براہ کرم تصدیق کریں کہ مخفف صحیح لکھا گیا ہے، مثال کے طور پر:[shortcode attribute="value"]内容[/shortcode]تھیم یا پلگ ان کے تنازعات کی جانچ کریں۔
پہلے سے طے شدہ تھیم پر جائیں (جیسے بیس پچیس)، ہر پلگ ان کو ایک ایک کرکے غیر فعال کریں تاکہ جانچ اور تصدیق کی جا سکے کہ آیا شارٹ کوڈ کی خرابی کا باعث بننے والے کوئی تنازعات موجود ہیں۔کیشے صاف کریں۔
کیشنگ پلگ انز یا CDNs استعمال کرتے وقت، اثر دیکھنے کے لیے آپ کو درست کرنے کے بعد کیش کو صاف کرنا ہوگا۔
تبصرہ سیکشن کے شارٹ کوڈز کو محفوظ طریقے سے فعال کرنے کے لیے کوڈ
حفاظتی خطرات سے بچنے کے لیے، یہ ممکن ہے۔ 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
