ahmad4u 115 ارسال شده در شهریور 98 گزارش بازنشر ارسال شده در شهریور 98 سلام دوستان با قرار دادن کد زیر در فانکشن تمام لینک های موجود در متن حذف میشه add_filter('the_content', 'removelink_content',1); function removelink_content($content = '') { preg_match_all("#<a(.*?)>(.*?)</a>#i",$content, $matches); $num = count($matches[0]);for($i = 0;$i < $num;$i++){ $content = str_replace($matches[0][$i] , $matches[2][$i] , $content); } return $content; } حالا میخوام همه لینک ها حذف نشه بلکه یکسری لینک هایی که بهش میدم حذف بشه و یکسری لینک هایی که آخرشون متغیر هست مثل (site.com/tag/1125) لطفا راهنمایی کنید کد بالا چه تغییری باید بکنه تشکر لینک به ارسال
pouya.x 5 ارسال شده در شهریور 98 گزارش بازنشر ارسال شده در شهریور 98 (ویرایش شده) در 20 ساعت قبل، ahmad4u گفته است : سلام دوستان با قرار دادن کد زیر در فانکشن تمام لینک های موجود در متن حذف میشه add_filter('the_content', 'removelink_content',1); function removelink_content($content = '') { preg_match_all("#<a(.*?)>(.*?)</a>#i",$content, $matches); $num = count($matches[0]);for($i = 0;$i < $num;$i++){ $content = str_replace($matches[0][$i] , $matches[2][$i] , $content); } return $content; } حالا میخوام همه لینک ها حذف نشه بلکه یکسری لینک هایی که بهش میدم حذف بشه و یکسری لینک هایی که آخرشون متغیر هست مثل (site.com/tag/1125) لطفا راهنمایی کنید کد بالا چه تغییری باید بکنه تشکر سلام از کد زیر استفاده کنید محل کد: ( function.php ) add_filter( 'the_content', 'misha_remove_all_a' ); function misha_remove_all_a( $content ){ $i_link = array ( '#<a href="http://pouya.com">(.*?)</a>#is', '#<a href="http://pouya1.com">(.*?)</a>#is', ); return preg_replace($i_link, '\1', $content); } ویرایش شده شهریور 98 توسط pouya.x 1 لینک به ارسال
ahmad4u 115 ارسال شده در شهریور 98 مالک گزارش بازنشر ارسال شده در شهریور 98 در ۱ ساعت قبل، pouya.x گفته است : سلام از کد زیر استفاده کنید محل کد: ( function.php ) add_filter( 'the_content', 'misha_remove_all_a' ); function misha_remove_all_a( $content ){ $i_link = array ( '#<a href="http://pouya.com">(.*?)</a>#is', '#<a href="http://pouya1.com">(.*?)</a>#is', ); return preg_replace($i_link, '\1', $content); } متاسفانه کار نمیکنه کد بالا و هیچ لینکی را حذف نمیکنه لینک به ارسال
mehran-b 2385 ارسال شده در شهریور 98 گزارش بازنشر ارسال شده در شهریور 98 در 18 دقیقه قبل، ahmad4u گفته است : متاسفانه کار نمیکنه کد بالا و هیچ لینکی را حذف نمیکنه بگو دقیقا چه لینک هایی رو میخوای حذف کنی. تگ ها یا دسته ها یا ... 1 لینک به ارسال
ahmad4u 115 ارسال شده در شهریور 98 مالک گزارش بازنشر ارسال شده در شهریور 98 لینک ها دو دسته میشن یکی لینک سایت: مثلا http://site.com یکی هم لینک های متغیر (یک بخش یا دو بخش متغییر باشه) : مثل http://site.com/tags/1562 یا http://site.com/1/1562 لینک به ارسال
mehran-b 2385 ارسال شده در شهریور 98 گزارش بازنشر ارسال شده در شهریور 98 در 6 دقیقه قبل، ahmad4u گفته است : لینک ها دو دسته میشن یکی لینک سایت: مثلا http://site.com یکی هم لینک های متغیر (یک بخش یا دو بخش متغییر باشه) : مثل http://site.com/tags/1562 یا http://site.com/1/1562 یعنی هر لینکی که توش آدرس سایت باشه باید حذف شه؟ 1 لینک به ارسال
ahmad4u 115 ارسال شده در شهریور 98 مالک گزارش بازنشر ارسال شده در شهریور 98 در هم اکنون، mehran-b گفته است : یعنی هر لینکی که توش آدرس سایت باشه باید حذف شه؟ اره ماهیت سایت خبرخوان هست و از سایت های دیگه مطلب جمع آوری میکنه میخواهیم لینک یکسری کلمات که لینکدار هستن را حذف کنیم (فقط لینک نه خود کلمه) لینک به ارسال
mehran-b 2385 ارسال شده در شهریور 98 گزارش بازنشر ارسال شده در شهریور 98 در هم اکنون، ahmad4u گفته است : اره ماهیت سایت خبرخوان هست و از سایت های دیگه مطلب جمع آوری میکنه میخواهیم لینک یکسری کلمات که لینکدار هستن را حذف کنیم (فقط لینک نه خود کلمه) من متوجه نمیشم چی میگی. اگر خبرخوان باشه شما منظورت اینه لینک های خارجی که مربوط به دامین شما نیست باید حذف شه. 1 لینک به ارسال
ahmad4u 115 ارسال شده در شهریور 98 مالک گزارش بازنشر ارسال شده در شهریور 98 در هم اکنون، mehran-b گفته است : من متوجه نمیشم چی میگی. اگر خبرخوان باشه شما منظورت اینه لینک های خارجی که مربوط به دامین شما نیست باید حذف شه. بله یکسری لینک هایی که تعیین میکنیم باید حذف بشه و از متن پست ها با کدی که خودم اول گذاشتم کل متن پست بدون لینک میشه اما مشکلش اینه که برای پست هایی که حتی بخواهیم لینکدار باشه هم حذف میکنه میخوام فقط لینک هایی که بهش میدم حذف کنه لینک به ارسال
mehran-b 2385 ارسال شده در شهریور 98 گزارش بازنشر ارسال شده در شهریور 98 در 7 دقیقه قبل، ahmad4u گفته است : بله یکسری لینک هایی که تعیین میکنیم باید حذف بشه و از متن پست ها با کدی که خودم اول گذاشتم کل متن پست بدون لینک میشه اما مشکلش اینه که برای پست هایی که حتی بخواهیم لینکدار باشه هم حذف میکنه میخوام فقط لینک هایی که بهش میدم حذف کنه خوب اینطوری شما باید با RegEx آشنایی داشته باشید. کدش این میشه: add_filter('the_content', function($content) { $dom = new DOMDocument('1.0', 'UTF-8'); @$dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8')); $xpath = new DOMXpath($dom); $anchor = $xpath->query('//a'); if($anchor->length == 0) { return $content; } $pattern = '/^https:\/\/mehran\.com/'; foreach($anchor as $link) { if(preg_match($pattern, $link->getAttribute('href'))) { if($link->childNodes->length > 0) { $link->parentNode->insertBefore($link->childNodes->item(0), $link); } $link->parentNode->removeChild($link); } } return trim(preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $dom->saveHTML($dom->documentElement)))); }); که متغییر pattern شامل الگوی آدرس لینک هایی میشه که باید حذف شن. به عنوان مثال مقداری که من وارد کردم لینک هایی که با عبارت: https://mehran.com شروع میشن رو حذف میکنه. 1 لینک به ارسال
pouya.x 5 ارسال شده در شهریور 98 گزارش بازنشر ارسال شده در شهریور 98 در 2 ساعت قبل، ahmad4u گفته است : متاسفانه کار نمیکنه کد بالا و هیچ لینکی را حذف نمیکنه تست کرده بودم ادرس داخل href رو درست عوض کنید کاملا حذف میشه 1 لینک به ارسال
ahmad4u 115 ارسال شده در دی 98 مالک گزارش بازنشر ارسال شده در دی 98 در در 8/28/2019 at 14:49، mehran-b گفته است : خوب اینطوری شما باید با RegEx آشنایی داشته باشید. کدش این میشه: add_filter('the_content', function($content) { $dom = new DOMDocument('1.0', 'UTF-8'); @$dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8')); $xpath = new DOMXpath($dom); $anchor = $xpath->query('//a'); if($anchor->length == 0) { return $content; } $pattern = '/^https:\/\/mehran\.com/'; foreach($anchor as $link) { if(preg_match($pattern, $link->getAttribute('href'))) { if($link->childNodes->length > 0) { $link->parentNode->insertBefore($link->childNodes->item(0), $link); } $link->parentNode->removeChild($link); } } return trim(preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $dom->saveHTML($dom->documentElement)))); }); که متغییر pattern شامل الگوی آدرس لینک هایی میشه که باید حذف شن. به عنوان مثال مقداری که من وارد کردم لینک هایی که با عبارت: https://mehran.com شروع میشن رو حذف میکنه. اگر عکس داشتیم با آدرس سایت خاص چه تغییراتی باید تو کدهای بالا اضافه کنیم تا مثلا عکس هایی که از سایت https://mehran.com/images لود میشه حذف کنه؟ لینک به ارسال
mehran-b 2385 ارسال شده در دی 98 گزارش بازنشر ارسال شده در دی 98 @ahmad4u add_filter('the_content', function($content) { $dom = new DOMDocument('1.0', 'UTF-8'); @$dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8')); $xpath = new DOMXpath($dom); $image = $xpath->query('//img'); if($image->length == 0) { return $content; } $pattern = '/^https:\/\/mehran\.com\/images.*/'; foreach($image as $img) { if(preg_match($pattern, $img->getAttribute('src'))) { $img->parentNode->removeChild($img); } } return trim(preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $dom->saveHTML($dom->documentElement)))); }); 1 لینک به ارسال
ahmad4u 115 ارسال شده در دی 98 مالک گزارش بازنشر ارسال شده در دی 98 آیا امکانش هست هر دو کد (حذف لینک + حذف تصویر) را در هم ادغام کنم یا باید حتما بصورت جداگانه وارد کنم. کد را بصورت زیر ادغام میکنم اما لینک حذف میشود اما تصویر حذف نمشود add_filter('the_content', function($content) { $dom = new DOMDocument('1.0', 'UTF-8'); @$dom->loadHTML(mb_convert_encoding($content, 'HTML-ENTITIES', 'UTF-8')); $xpath = new DOMXpath($dom); $anchor = $xpath->query('//a'); if($anchor->length == 0) { return $content; } $pattern = '/^https:\/\/mehran\.com/'; foreach($anchor as $link) { if(preg_match($pattern, $link->getAttribute('href'))) { if($link->childNodes->length > 0) { $link->parentNode->insertBefore($link->childNodes->item(0), $link); } $link->parentNode->removeChild($link); } } $image = $xpath->query('//img'); if($image->length == 0) { return $content; } $pattern = '/^https:\/\/mehran\.com\/images.*/'; foreach($image as $img) { if(preg_match($pattern, $img->getAttribute('src'))) { $img->parentNode->removeChild($img); } } return trim(preg_replace('/^<!DOCTYPE.+?>/', '', str_replace(array('<html>', '</html>', '<body>', '</body>'), array('', '', '', ''), $dom->saveHTML($dom->documentElement)))); }); اگر امکانش هست ادغام شده دو کد را هم قرار بدید لینک به ارسال
mehran-b 2385 ارسال شده در دی 98 گزارش بازنشر ارسال شده در دی 98 @ahmad4u میشه ولی حوصله اش رو ندارم. جدا جدا استفاده کنید. 1 لینک به ارسال
پست های پیشنهاد شده
لطفا برای ارسال دیدگاه وارد شوید
شما بعد از اینکه وارد حساب کاربری خود شدید می توانید دیدگاهی ارسال کنید
ورود به حساب کاربری