PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : چگونه حذف مطالبی که دارای یک کلمه یا متن خاصی هستند



saeed.spore
June 8th, 2016, 23:46
سلام اساتید بزرگوار
من میخوام اون مطالبی که مثلا دارای کلمه دانلود هستند را از لیست RSS زیر حذف کنم
چطور میتونم خودم از روش شرط گذاری استفاده کردم ولی
اگه شرط بگذارم هیچ مطلبی دیگه ای را نمایش نمیده



//شرط منع کلمه

$mystring = $item_title;
$findme = 'دانلود ';
$pos = strpos($mystring, $findme);


if ($pos === false) {

{




میشه اساتید راهنمایی کنید


<?php
echo '<meta charset="UTF-8">';

error_reporting(E_ALL);

$xml = file_get_contents('http://yoursite.com/feed/');

// MUNG THE XML BECAUSE WE DO NOT HAVE THE NAMESPACE INFORMATION
$xml = str_replace('content:encoded', 'content__encoded', $xml);
$xml = str_replace('isc:', 'isc__', $xml);

// CONVERT THE XML TO AN OBJECT
$obj = SimpleXML_Load_String($xml, 'SimpleXMLElement', LIBXML_NOCDATA);


// GET SOME FIELDS
foreach($obj->channel->item as $item)
{
$item_title = $item->title;
$item_link = $item->link;
$item_description = $item->description;
$item_enclosure = $item->enclosure->attributes()->url;
echo "<br/><strong>$item_title</strong> $item_description<br/>$item_enclosure";
}
?>

rezaonline.net
June 8th, 2016, 23:50
<?php
echo '<meta charset="UTF-8">';

error_reporting(E_ALL);

$xml = file_get_contents('http://yoursite.com/feed/');

// MUNG THE XML BECAUSE WE DO NOT HAVE THE NAMESPACE INFORMATION
$xml = str_replace('content:encoded', 'content__encoded', $xml);
$xml = str_replace('isc:', 'isc__', $xml);

// CONVERT THE XML TO AN OBJECT
$obj = SimpleXML_Load_String($xml, 'SimpleXMLElement', LIBXML_NOCDATA);


// GET SOME FIELDS
foreach($obj->channel->item as $item)
{
$item_title = $item->title;
$item_link = $item->link;
$item_description = $item->description;
$item_enclosure = $item->enclosure->attributes()->url;


// check
$mystring = $item_title;
$findme = 'دانلود ';
$pos = strpos($mystring, $findme);
if($pos)
continue;

echo "<br/><strong>$item_title</strong> $item_description<br/>$item_enclosure";
}
?>

saeed.spore
June 9th, 2016, 00:24
<?php
echo '<meta charset="UTF-8">';

error_reporting(E_ALL);

$xml = file_get_contents('http://yoursite.com/feed/');

// MUNG THE XML BECAUSE WE DO NOT HAVE THE NAMESPACE INFORMATION
$xml = str_replace('content:encoded', 'content__encoded', $xml);
$xml = str_replace('isc:', 'isc__', $xml);

// CONVERT THE XML TO AN OBJECT
$obj = SimpleXML_Load_String($xml, 'SimpleXMLElement', LIBXML_NOCDATA);


// GET SOME FIELDS
foreach($obj->channel->item as $item)
{
$item_title = $item->title;
$item_link = $item->link;
$item_description = $item->description;
$item_enclosure = $item->enclosure->attributes()->url;


// check
$mystring = $item_title;
$findme = 'دانلود ';
$pos = strpos($mystring, $findme);
if($pos)
continue;

echo "<br/><strong>$item_title</strong> $item_description<br/>$item_enclosure";
}
?>


مشکل داره همینطور منم درست کردم ولی
صفحه را خالی میکنه ؟ روشی اساتید محترم دم دست ندارند

- - - Updated - - -

(:| :->

T.Toosi
June 9th, 2016, 08:56
مشکل داره همینطور منم درست کردم ولی
صفحه را خالی میکنه ؟ روشی اساتید محترم دم دست ندارند

سلام، یعنی چی صفحه را خالی میکند ؟ صفحه سفید نمایش میدهد؟ ممکن است شرط در تمامی $item_title پیدا میکند که چیزی نمایش نمیدهد، آدرس فید هم قرار دهید چک کنم.

saeed.spore
June 9th, 2016, 10:13
ببینید من echo. را داخل شرط قرار دادم دیگه هیچ چیزی را نمایش نمیده
سایت http://www.11-taktaraneh.com/

saeed.spore
June 9th, 2016, 12:10
سلام، یعنی چی صفحه را خالی میکند ؟ صفحه سفید نمایش میدهد؟ ممکن است شرط در تمامی $item_title پیدا میکند که چیزی نمایش نمیدهد، آدرس فید هم قرار دهید چک کنم.

من میخوام تایتل هایی که دارای کلمه مویک ویدئو هستند از لیست Feed حذف کنم
دانلود موزیک ویدئوی Justin Bieber – Company

T.Toosi
June 9th, 2016, 12:40
<?php
echo '<meta charset="UTF-8">';

error_reporting(E_ALL);

$xml = file_get_contents('http://yoursite.com/feed/');

// MUNG THE XML BECAUSE WE DO NOT HAVE THE NAMESPACE INFORMATION
$xml = str_replace('content:encoded', 'content__encoded', $xml);
$xml = str_replace('isc:', 'isc__', $xml);

// CONVERT THE XML TO AN OBJECT
$obj = SimpleXML_Load_String($xml, 'SimpleXMLElement', LIBXML_NOCDATA);


// GET SOME FIELDS
foreach($obj->channel->item as $item)
{
$item_title = $item->title;
$item_link = $item->link;
$item_description = $item->description;
$item_enclosure = $item->enclosure->attributes()->url;

if(strpos($item_title, 'موزیک ویدئو')) return;
echo "<br/><strong>$item_title</strong> $item_description<br/>$item_enclosure";
}
?>

saeed.spore
June 9th, 2016, 13:00
<?php
echo '<meta charset="utf-8">';

error_reporting(e_all);

$xml = file_get_contents('http://yoursite.com/feed/');

// mung the xml because we do not have the namespace information
$xml = str_replace('content:encoded', 'content__encoded', $xml);
$xml = str_replace('isc:', 'isc__', $xml);

// convert the xml to an object
$obj = simplexml_load_string($xml, 'simplexmlelement', libxml_nocdata);


// get some fields
foreach($obj->channel->item as $item)
{
$item_title = $item->title;
$item_link = $item->link;
$item_description = $item->description;
$item_enclosure = $item->enclosure->attributes()->url;

if(strpos($item_title, 'موزیک ویدئو')) return;
echo "<br/><strong>$item_title</strong> $item_description<br/>$item_enclosure";
}
?>


خیلی ممنون کار کرد ولی مشکلی که هست اینه که الان تا مطلبی که موزیک ویدئوی میرسته اون مطلب را نمایش میده و بقیه را نمایش نمیده
یک سوال استاد
میشه از آرایه برای لیست کلماتی که منع میخوام بکنیم در rss استفاده کرد مثلا
به این شکل
؟!



$targets = array('موزیک ویدئوی', 'دانلود موزیک ویدئوی' );
if(strpos($item_title, $targets)) return;

iHSG
June 9th, 2016, 13:29
سلام
اینو همینطوری بر اساس کد معرفی شده در این لینک http://wordpress.stackexchange.com/questions/56853/remove-specific-page-post-from-feed نوشتم خودم وردپرس نداشتم تستش کنم نمی دونم کار میکنه یا نه.
باید در فایل functions.php قالب بذاریدش خودکار واژه هایی که در آرایه bad_titles است رو قراره که انشاءالله از rss حذف کنه :)



<?php
function rss_exclude_filter($query){
global $wpdb;
if (!$query->is_admin && $query->is_feed) {
$bad_titles = array('موزیک ویدئو', 'تست ویدئو');
$bad_posts = array();
foreach ($bad_titles as $title){
$posts = $wpdb->get_col("select ID from $wpdb->posts where post_title LIKE '%$title%' ");
foreach ($posts as $post){
$bad_posts[] = $post;
}
}
$query->set('post__not_in', $bad_posts);
}
return $query;
}
add_filter('pre_get_posts', 'rss_exclude_filter');
?>


البته ظاهراً با افزونه https://wordpress.org/plugins/stealth-publish/ هم می تونید براحتی این کار رو انجام بدید.

saeed.spore
June 9th, 2016, 13:34
سلام
اینو همینطوری بر اساس کد معرفی شده در این لینک http://wordpress.stackexchange.com/questions/56853/remove-specific-page-post-from-feed نوشتم خودم وردپرس نداشتم تستش کنم نمی دونم کار میکنه یا نه.
باید در فایل functions.php قالب بذاریدش خودکار واژه هایی که در آرایه bad_titles است رو قراره که انشاءالله از rss حذف کنه :)



<?php
function rss_exclude_filter($query){
global $wpdb;
if (!$query->is_admin && $query->is_feed) {
$bad_titles = array('موزیک ویدئو', 'تست ویدئو');
$bad_posts = array();
foreach ($bad_titles as $title){
$posts = $wpdb->get_col("select ID from $wpdb->posts where post_title LIKE '%$title%' ");
foreach ($posts as $post){
$bad_posts[] = $post;
}
}
$query->set('post__not_in', $bad_posts);
}
return $query;
}
add_filter('pre_get_posts', 'rss_exclude_filter');
?>


البته ظاهراً با افزونه https://wordpress.org/plugins/stealth-publish/ هم می تونید براحتی این کار رو انجام بدید.
ممنون ولی من برای وردپرس لازم ندارم
درسته سایت منبع وردپرس هست ولی من برای سیستم دیگه ای دارم این کارا میکنم و مشکل بزرگی که دارم تنها سایتی که به روز و دارای فایل های MP3 همین سایت در ( RSS )
اگه بتونم یک سری مطالب که دارای اینکلمه هستند را منع کنم از حلقه Foreach خیلی خوب میشه