رفتن به مطلب

تبدیل یک متن به متن دیگر


پست های پیشنهاد شده

سلام من مطالب سایت های دیگر رو با فید وردپرس میگیرم یه متنی تقریبا تکراری در همه مطالب اون ار اس اس وجود داره که میخوام تغییرش بدم یعنی هر وقت مطلب جدید وارد شد اون متن انتهایی که وارد سایت من میشه تغییر یافتش وارد بشه متنی که وجود داره این هست

نوشته استخدام مرکز ترجمه تخصصی فراترجمه در تهران اولین بار در «اینجا» پدیدار شد.

که میخوام به

برای دیدن متن کامل در منبع روی عنوان مطلب کلیک کنید استخدام مرکز ترجمه تخصصی فراترجمه در تهران

تبدیل بشه

ویرایش شده توسط iman64
لینک به ارسال

اول از همه باید متن رو به صورت html به دست بیارید (برای اینکار سورس کد صفحه را ببینید یا نشانی آنلاین بگذارید) بعدش

فایل single.php قالبتون رو باز کنید و تابع


the_content();

رو پیدا کنید و تغییرش بدید به


$content = $post->post_content;
$content = str_replace('متن فعلی <a href="#">لینک</a>', '<a href="link">متن جایگزین</a>', $content);
echo $content;

لینک به ارسال

سورسش


<p>نوشته <a rel="nofollow" href="http://www.linkpagejari.com">استخدام منشی – ۴ خرداد ۹۴</a> اولین بار در <a rel="nofollow" href="http://www.site.com/">«اینجا»</a> پدیدار شد.</p>

که میخوام به


<p>کلیک کنید <a rel="nofollow" href="http://www.linkpagejari.com">استخدام کمک حسابدار – شیراز</a></p>

البته جایی که این لینک http://www.linkpagejari.com گذاشتم این لینک ادرس صفحه جاری هست و در هر مطلبی فرق میکنه

بعد اینکه در صفحه single.php چیزی که گفتید نتونستم انجام بدم

اینم سورس صفحه single.php


<?php
/**
* The Template for displaying all single posts
*
* @package WordPress
* @subpackage Twenty_Fourteen
* @since Twenty Fourteen 1.0
*/
get_header(); ?>
<div id="primary" class="content-area">
<div id="content" class="site-content" role="main">
<?php
// Start the Loop.
while ( have_posts() ) : the_post();
/*
* Include the post format-specific template for the content. If you want to
* use this in a child theme, then include a file called called content-___.php
* (where ___ is the post format) and that will be used instead.
*/
get_template_part( 'content', get_post_format() );
// Previous/next post navigation.
twentyfourteen_post_nav();
// If comments are open or we have at least one comment, load up the comment template.
if ( comments_open() || get_comments_number() ) {
comments_template();
}
endwhile;
?>
</div><!-- #content -->
</div><!-- #primary -->
<?php
get_sidebar( 'content' );
get_sidebar();
get_footer();

ویرایش شده توسط iman64
لینک به ارسال

ببخشید اشتباه گفتم که این لینک http://www.linkpagejari.com مال صفحه جاری است در واقع لینکی است که سایت منبع میده و متغییر است

لینک به ارسال

اگر اون لینک متغییره که پس متن ثابتی ندارید که بخواهید تغییرش بدید

تابعی که گفتم در فایل content.php قالب شماست ولی وقتی می تونید ری پلیس را انجام دهید که کل مقدار دیتاها ثابت باشند در غیر اینصورت می تونید با جی کوئری دستکاریش کنید که خیلی بهینه نیست (به سایت یک مقدار فشار می اره)

مثل:


<script>
$(".entry-content").each(function() {
var a = $(this).find("p:last-child").find("a:first-child").attr("href");
var t = $(this).find("p:last-child").find("a:first-child").text();
var p = 'کلیک کنید <a href="'+a+'">'+t+'</a>';
$(this).find("p:last-child").html(p);
})
</script>

که باید در footer.php قبل از بسته شدن تگ body قرار بگیره

لینک به ارسال

اگر اون لینک متغییره که پس متن ثابتی ندارید که بخواهید تغییرش بدید

تابعی که گفتم در فایل content.php قالب شماست ولی وقتی می تونید ری پلیس را انجام دهید که کل مقدار دیتاها ثابت باشند در غیر اینصورت می تونید با جی کوئری دستکاریش کنید که خیلی بهینه نیست (به سایت یک مقدار فشار می اره)

مثل:


<script>
$(".entry-content").each(function() {
var a = $(this).find("p:last-child").find("a:first-child").attr("href");
var t = $(this).find("p:last-child").find("a:first-child").text();
var p = 'کلیک کنید <a href="'+a+'">'+t+'</a>';
$(this).find("p:last-child").html(p);
})
</script>

که باید در footer.php قبل از بسته شدن تگ body قرار بگیره

به این صورت تقریبا حل کردم


$content = $post->post_content;
$content = str_replace('نوشته ', 'برای دیدن خبر در سایت منبع کلیک کنید:', $content);
$content = str_replace('اولین بار در', '', $content);
$content = str_replace('پدیدار شد.', '', $content);
echo $content;

منتهی یه چیز دیگر میخوام در اینجا یه متن که داخل لینکی وجود داره متغییر هست در هر مطلبی اینو چه جور میتونم کاری کنم که لینک در پنجره جدید باز بشه اگه متن و لینکش ثابت می بود میشد کاری کرد اما چون متغییر هست نمیتونم . ممنون میشم کمک کنید تشکر

ویرایش شده توسط iman64
لینک به ارسال
  • 1 ماه بعد...

سلام استاد جان من برای جایگزینی متن از کد


$content = $post->post_content;
$content = str_replace('منبع : ', 'تومن', $content);
echo $content;

استفاده میکنم اما فقط متن های ادامه مطلب رو عوض میکنه و متن چکیده مطلب رو عوض نمیکنه

از روش زیر هم استفاده کردم که اصلا متن رو نه توی ادامه مطلب عوض کرد و نه توی چکیده مطلب


function replace_words($content){
$olds = array('دریافت فایل', 'منبع', 'vpn');
$news = array('دانلود فایل', 'تومان', 'v.p.n');
$content = str_replace($olds , $news ,$content);
return $content;
}
add_filter('the_content', 'replace_words');
add_filter('the_excerpt', 'replace_words');

ویرایش شده توسط iman64
لینک به ارسال


$excerpt = get_the_excerpt();
$content = str_replace('منبع : ', 'تومن', $excerpt);
echo $content;

رو با


the_excerpt();

در فایلهایی که چکیده مطلب رو فراخوانی می کنه عوض کنید

لینک به ارسال

پست هایی که خودم ارسال میکنم این جایگزینی رو اعمال میکنه اما پست هایی که از افزونه فید وردپرس هستن رو جایگزین نمیکنه

لینک به ارسال

این دیگه به کدهای قالبتون و توابعتون مربوط می شه تو انجمن فقط بر اساس توابع استاندارد راهنمایی می شه

می تونید با جی کوئری هم همین کار را بکنید که مستقیما روی خروجی اثر بگذاره و به مشکل نخورید

به این ترتیب

1. تابع های the_content و the_excerpt را در کل قالبتون بیابید و داخل یک دایو با کلاس مشخص قرار بدید مثلا کلاس post و این کد را به footer.php قالب اضافه کنید


<script>
$(".post").each(function() {
var h = $(this).html();
var h = h.replace('منبع : ', 'تومن');
$(this).html(h);
});
</script>

لینک به ارسال

دو نکته:

1. برای عباراتی مثل "تومن" ازش استفاده نکنید چون در تمام متن مطالب عبارت ریپلیس می شه حتی اگر "تومن" بخشی از یک کلمه بزرگتر باشه سعی کنید عبارتتون ترکیب چند کلمه در کنار هم باشه که امکان تشابهش در جای دیگه ای از مطلب وجود نداشته باشه

2. متن را بجای تایپ کردن مستقیما از سورس کد خروجی فعلی سایتتون کپی کنید یعنی یکی از مطالب فیدوردپرسیتون رو باز کنید و از صفحه سورس بگیرید و با ctrl+f عبارت مد نظرتون رو توش بیابید و سورسش رو ازش کپی و پیست کنید به کدهاتون چون اولا ممکنه عبارت داخل تگی قرار گرفته که دیده نشه مثل تگ span و ثانیا ممکنه کارکترهایی توی عبارت باشند که در ظاهر قابل تشخیص نباشند مثلا نیم فاصله جای فاصله قرار داشته باشه

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...