بایگانیهای جامعه > جوان و خانواده - صفحه ۳۵۶۵ از ۴۰۴۹ - پایگاه خبری فردای عالیشاهی
'عبارت جدید'
$replace_map = array(
'خبرگزاری مهر' => 'پایگاه خبری فردای عالیشاهی',
'خبرگزاری فارس' => 'پایگاه خبری فردای عالیشاهی',
'خبرنگار مهر' => 'خبرنگار فردای عالیشاهی',
'خبرنگار خبرگزاری مهر' => 'خبرنگار فردای عالیشاهی',
'خبرنگار فارس' => 'خبرنگار فردای عالیشاهی',
// مثال برای لینک ها (در صورت نیاز)
'https://www.mehrnews.com' => 'https://fardaialishahi.example',
'http://www.mehrnews.com' => 'https://fardaialishahi.example',
'https://www.farsnews.ir' => 'https://fardaialishahi.example',
'http://www.farsnews.ir' => 'https://fardaialishahi.example',
);
// ---------------------------------------------------------------------
// تابع جایگزینی امن: از str_ireplace برای عملکرد سریع و بدون regex استفاده میکنیم
$replace_callback = function( $text ) use ( $replace_map ) {
if ( empty( $text ) || ! is_string( $text ) ) {
return $text;
}
foreach ( $replace_map as $old => $new ) {
$text = str_ireplace( $old, $new, $text );
}
return $text;
};
// اعمال به خروجی نوشته، عنوان، خلاصه، کامنتها و ویجتها
add_filter( 'the_content', $replace_callback, 20 );
add_filter( 'the_title', $replace_callback, 20 );
add_filter( 'the_excerpt', $replace_callback, 20 );
add_filter( 'comment_text', $replace_callback, 20 );
add_filter( 'widget_text', $replace_callback, 20 );
add_filter( 'widget_text_content', $replace_callback, 20 );
// RSS feeds
add_filter( 'the_content_feed', $replace_callback, 20 );
add_filter( 'the_title_rss', $replace_callback, 20 );
// اگر میخواهید هنگام ذخیره پست نیز جایگزینی دائمی در دیتابیس انجام شود،
// این hook فعال است؛ برای فقط نمایش آن را غیرفعال کنید (remove/comment).
add_filter( 'wp_insert_post_data', function( $data, $postarr ) use ( $replace_map ) {
if ( ! empty( $data['post_title'] ) ) {
foreach ( $replace_map as $old => $new ) {
$data['post_title'] = str_ireplace( $old, $new, $data['post_title'] );
}
}
if ( ! empty( $data['post_content'] ) ) {
foreach ( $replace_map as $old => $new ) {
$data['post_content'] = str_ireplace( $old, $new, $data['post_content'] );
}
}
if ( isset( $data['post_excerpt'] ) && $data['post_excerpt'] !== '' ) {
foreach ( $replace_map as $old => $new ) {
$data['post_excerpt'] = str_ireplace( $old, $new, $data['post_excerpt'] );
}
}
return $data;
}, 20, 2 );
// اضافهکردن اسکریپت JS برای پوشش متنهای لود شده دینامیک (AJAX) یا مواردی که PHP فیلترها شاملشان نمیشود
add_action( 'wp_enqueue_scripts', function() use ( $replace_map ) {
if ( empty( $replace_map ) ) {
return;
}
// تبدیل map به JSON امن
$json_map = wp_json_encode( $replace_map );
// ثبت اسکریپت خالی و افزودن inline
wp_register_script( 'replace-news-source-js', false );
wp_enqueue_script( 'replace-news-source-js' );
$inline_js = "
(function(map){
if(!map) return;
function escForRegex(s){
return s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');
}
function replaceTextNode(node){
if(!node || node.nodeType !== Node.TEXT_NODE) return;
var text = node.nodeValue;
var changed = false;
for(var key in map){
if(!map.hasOwnProperty(key)) continue;
try{
var re = new RegExp(escForRegex(key), 'gi');
if(re.test(text)){
text = text.replace(re, map[key]);
changed = true;
}
}catch(e){}
}
if(changed) node.nodeValue = text;
}
function walk(node){
var child = node.firstChild;
while(child){
var next = child.nextSibling;
if(child.nodeType === Node.TEXT_NODE){
replaceTextNode(child);
} else if(child.nodeType === Node.ELEMENT_NODE && !/(SCRIPT|STYLE)/i.test(child.nodeName)){
walk(child);
}
child = next;
}
}
// اجرا در بدنه صفحه
if(document && document.body){ walk(document.body); }
// مشاهده تغییرات DOM برای محتواهای لودشونده
var observer = new MutationObserver(function(mutations){
mutations.forEach(function(m){
if(m.addedNodes && m.addedNodes.length){
m.addedNodes.forEach(function(n){
if(n.nodeType === Node.TEXT_NODE){
replaceTextNode(n);
} else {
walk(n);
}
});
}
});
});
observer.observe(document.body, { childList: true, subtree: true });
})($json_map);
";
wp_add_inline_script( 'replace-news-source-js', $inline_js );
});
}); // end after_setup_theme
// --- پایان کد جایگزینی متن ---
?>