محدود کردن تعداد کاراکترها در وردپرس

4.4/5 - (9 امتیاز)

اگر شما هم برای راه‌اندازی سایت و یا وبلاگ خود از سیستم مدیریت محتوای وردپرس استفاده می‌کنید قطعا وردپرس از دیدگاه شما به عنوان یک پلتفرم خاص به حساب می‌آید چرا که در این سیستم مدیریت محتوای متن باز شما قادر خواهید بود تقریبا تمامی نیازهای خود را برای ایجاد و راه اندازی سایت مورد نظر خود رفع نمایید.

با توجه به رشد چشم‌گیر و روز افزون وردپرس در میان کاربران می‌توان خواسته‌ها و نیازهای متفاوت آنها را برای سفارشی کردن وردپرس، که بیشتر مرتبط با هسته‌ی وردپرس و پوسته‌های آن می‌باشد را دید.

محدود کردن تعداد کاراکترها در وردپرس را نیز می‌توان به عنوان یکی از این نیازها معرفی کرد چرا که در بسیاری از موارد همانند نظم بخشیدن به ظاهر پوسته برای نمایش تعداد کاراکتر مشخص شده در هر نوشته، محدود کردن کاراکتر عناوین نوشته‌های وردپرس و… نیاز هست مانُور بیشتری بر روی تعداد کاراکترهای متن در وردپرس داشت که این محدودیت رابطه‌ی مستقیمی با هسته و پوسته‌ی وردپرس دارد و در این نوشته از وبلاگ ماندگار وب بنا به درخواست یکی از بازدیدکنندگان آن را بصورت کامل برای شما دوست داران وردپرس شرح خواهیم داد .

آموزش تعیین تعداد کاراکتر در عناوین نوشته‌های وردپرس:

از دلایل مختلفی که برای کوتاه کردن عنوان‌ها در وردپرس می‌توان به آن اشاره کرد این است که ممکن است شما پوسته‌ای را طراحی و یا در حال استفاده از پوسته‌ای هستید که در برخی از قسمت‌های آن به دلیل بلند بودن عنوان نوشته‌ها پوسته‌ی شما از حالت معمول خود خارج شده و عنوان‌ها با آرایش نا منظمی در پوسته به نمایش در بیایند که برای رفع کردن چنین مشکلاتی و مشخص کردن تعداد کاراکتر در عنوان می‌توانید به روش‌های زیر عمل کنید:

در روش اول که بیشتر مناسب برای دوستانی هست که نیاز دارند این عمل را تنها در قسمتِ خاصی از پوسته انجام دهند به این معنی که آنها به کم کردن تعداد کلمات در عنوان نوشته‌های وردپرس تنها در یک قسمت از پوسته‌ی خود نیاز دارند و می‌توانند از دستور زیر برای کنترل کردن تعداد کاراکترها استفاده نمایند:

<?php echo mb_substr(the_title('', '', FALSE), 0, 30); ?>

در خط بالا تعداد کاراکترها برای نمایش عنوان نوشته بر روی 30 کاراکتر قرار داده شده است که شما می‌توانید این مقدار را بسته به نیاز خود تغییر دهید، شاید پس از ذخیره کردن تغییرات و نمایش آن متوجه این موضوع شوید که ممکن است کاربران  به خاطر محدود کردن تعداد کاراکترها در عناوین متوجه آن نشوند که این عنوان تنها خلاصه‌ای از عنوان اصلی می‌باشد که برای رفع این مشکل هم می‌توانید طبق روال همیشگی ادامه یا همان ( … ) را به آخر عناوین خود برای درک بهتر کاربران اضافه کنید که دستور بالا به شکل زیر تغییر خواهد کرد:

<?php if (strlen($post->post_title) > 30) { echo mb_substr(the_title($before = '', $after = '', FALSE), 0, 30) . '...'; } else { the_title(); } ?>

روش دوم هم مناسب برای دوستانی هست که در پوسته‌ی خود نیاز دارند این عمل را به دفعات بیشتر تکرار کنند که تقریبا استفاده از روش اول باعث بالا رفتن حجم کاری آنها می‌شود و برای تسریع و سهولت کارشان می‌توانند دستور زیر را به فایل functions.php پوسته‌ی وردپرس خود اضافه نمایند، دوستانی که این فایل را در ریشه پوسته خود ندارند می‌توانند آنرا ایجاد کنند  (خواهشمندیم پیش از ایجاد هر تغییری در این فایل از آن نسخه‌ی پشتیبان تهیه نمایید تا در صورت بروز خطا آنرا به حالت اول بازگردانید):

function limit_title($title, $n){
if ( strlen ($title) > $n )
{
echo mb_substr(the_title($before = '', $after = '', FALSE), 0, $n) . '...';
}
else { the_title(); }
}

و برای نمایش خروجی آن در فایل‌های پوسته از تابع زیر استفاده نمایید:

<?php limit_title($post->post_title, 30); ?>

لازم به ذکر است این تابع باید در حلقه‌ی پست استفاده شود و می‌توانید مقدار 30 را به مقدار دلخواه خود تغییر دهید.

آموزش تعیین تعداد کاراکتر در نوشته‌های وردپرس:

همانطور که در آغاز نوشته به آن اشاره کردیم تعیین تعداد کلمه‌ها در بخش نوشته‌های پوسته‌ی شما می‌تواند نظم خاصی را به پوسته‌ی شما ببخشد و به دلیل یکسان بودن تعداد کاراکترها در نوشته‌ها، باعث زیبایی پوسته‌ی وردپرس شما شود همچنین در مواردی همانند طراحی اسلایدر برای پوسته‌ی خود نیاز دارید که تعداد کلمات مشخص شده‌ای را برای نمایش در اسلایدر تعیین کنید چرا که ممکن است در حالت پیش‌فرض، تعداد کاراکترهای نا مشخص باعث برهم ریختن نمایش اسلایدر پوسته‌ی شما شود برای محدود کردن تعداد کلمات در نوشته‌ها راه‌های گوناگونی وجود دارد که بصورت جداگانه به معرفی پر کاربردترین آنها می‌پردازیم.

اگر قصد این را دارید که تنها در یک بخش از پوسته‌ی خود تعداد کاراکترهای نوشته را مشخص کنید بهتر است از ساده‌ترین روش برای کم کردن تعداد کلمه‌ها در نوشته‌های وردپرس خود استفاده کنید که برای انجام این کار لازم است دستور زیر را به فایل فانکشن پوسته اضافه نمایید:

function excerpt($length) {
return 30;
}
function more($more) {
return ' ...';
}
add_filter('excerpt_more', 'more');
add_filter('excerpt_length', 'excerpt');

لازم است بدانید برای عملکرد صحیح این فانکشن می‌بایست در حلقه‌ی خود تابع

<?php the_content();?>

را به تابع

<?php the_excerpt();?>

تغییر بدهید. همانطور که بعد از ذخیره کردن مشاهده خواهید کرد تعداد کاراکترهای تابع the_excerpt به تعداد مورد پسند شما تغییر یافته است که در دستور بالا این مقدار برای نمونه بر روی 30 کاراکتر تنظیم شده است.

در روش دوم که مناسب برای دوستانی هست که در پوسته‌ی خود تعداد زیادی حلقه دارند و یا به عبارتی تعداد کوئری‌ها در پوسته‌ی آنها زیاد می‌باشد و تمایل دارند بر روی کاراکترهای خروجی متن این حلقه‌ها کنترل بیشتری داشته باشند، برای انجام این کار کافیست دستورات زیر را به فایل فانکشن پوسته‌ی خود اضافه نمایند:

function the_content_limit($max_char, $more_link_text = 'ادامه ...', $stripteaser = 0, $more_file = '') {
$content = get_the_content($more_link_text, $stripteaser, $more_file);
$content = apply_filters('the_content', $content);
$content = str_replace(']]>', ']]&gt;', $content);
$content = strip_tags($content,'');
if (strlen($_GET['p']) > 0) {
echo "<p>";
echo $content;
echo "&nbsp;<a href='";
the_permalink();
echo "'>"."ادامه مطلب &rarr;</a>";
echo "</p>";
}
else if ((strlen($content)>$max_char) && ($espacio = strpos($content, " ", $max_char ))) {
$content = mb_substr($content, 0, $espacio);
$content = $content;
echo "<p>";
echo $content;
echo "...";
echo "&nbsp;<a href='";
the_permalink();
echo "'>".$more_link_text."</a>";
echo "</p>";
}
else {
echo "<p>";
echo $content;
echo "&nbsp;<a href='";
the_permalink();
echo "'>"."ادامه مطلب &rarr;</a>";
echo "</p>";
}
}

و برای خروجی آن در پوسته‌ی وردپرس خود از تابع زیر استفاده نمایند و مقدار 30 را به مقدار دلخواه خود تغییر دهند، همچنین می‌تو‌انید کدهای بالا را برای محدود کردن تعداد کلمه‌ها در نوشته‌ها از انتهای همین نوشته در ماندگار وب بصورت افزونه دریافت کرده و پس از فعالسازی آن برای استفاده در پوسته‌ی خود تابع آن را فراخوان کنید:

<?php the_content_limit(30); ?>

امیدورام این آموزش مورد پسند شما دوستان قرار گرفته باشد.

دریافت افزونه محدود کردن تعداد کاراکترها در نوشته‌ها

4.4/5 - (9 امتیاز)

کانال تلگرام ماندگار وب

  1. فردین

    اوووووووووووووووووه
    پسر ترکوندی با این کد دم شما گرممممممم
    خیلی جاها به دردم خورد
    ولی وقتی میرم تو یه دسته مثلا دسته مذهبی مطالب اون دسته رو کامل نشون میده میخوام از این کد استفاده کنم
    باید تو کدوم قسمت پوسته بزارم
    سینگل؟
    پیج؟
    کجا خواهشن راهنمایی کنید
    پوسه ای که ازش استفاده میکنم اینه
    http://themes.mandegarweb.com/neutral/

    1. امیر خلجی مهر

      خواهش میکنم فردین جان
      منظورت از دسته چی هست فردین جان
      منظورت تمام نوشته های یک دسته هست یا چیز دیگه
      اگه تو پوسته فایلی به نام archive یا category وجود داره باید تابع the_content رو به the_excerpt تغییر بدی
      اگه مشکلی تو ویرایش داشتی لطفا” تو انجمن مطرح کن
      موفق باشی

  2. hadad

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

    1. امیر خلجی مهر

      سلام
      خواهش میکنم حداد جان در مورد خبرنامه هم حقیقتش امکانش نیست ، لطفا” جسارت بنده رو ببخشید {گل}

  3. جواد

    سلام
    ضمن تشكر از مطالب پركاربردتئن بايد بگم چرا لقمه رو دور سرتون مي پيچونيد
    the_content_rss(”,TRUE,”,20);
    20 تعداد كلمات است

    1. امیر خلجی مهر

      درود بر شما
      دوست خوبم واقعاً فکر میکنید ما این همه بیکار هستیم که لقمه رو دور سرمون بگردونیم؟
      شما بفرمایید به نظرتون این تابعی که اینجا گذاشتید رو تا حدی میشه کاستومایز کرد؟

  4. ترنگ

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

    1. امیر خلجی مهر

      نه قربونتون برم چنین چیزی نیست
      کاربرد این آموزش چیز دیگری هست، برای مثال میشه برای متن های نوشته ها در برگه ی اصلی تعداد کاراکتر مشخص کرد، یعنی تعیین میکنیم در برگه ی اصلی تنها 50 کاراکتر از کل متن رو به نمایش در بیاره
      موفق باشید

  5. رئیسی

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

    به هر حال

    من وقتی پستی رو ارسال میکنم در مرورگرم “فایرفاکس یا …” اون پست نصفه نیمه میاد
    اصلا زمانی که پست رو ارسال میکنم همون لحظه که ارسال میشه نوشته : نمایش پست
    موس رو که روی اون میبرم ، عنوان پست نصفه نیمه نمایش داده میشه
    البته اگه عنوانش طولانی باشه این اتفاق میفته و عاوین کوتاه این مشکل رو ندارند

    مثال :

    عکسی از سنگ قبر تجملاتی برای سگ یک بازیگر تلویزیون و صدا و سیما

    که در جستجوگر شده :

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

    خواهشا بهم بگید چکار کنم ؟
    من مبتدی هستم ، کمی سطح پایین بگید که متوجه شم

    ببخشید خواهشا

    1. امیر خلجی مهر

      درود

      کجا نصف و نیمه میاد؟ اگه منظور شما عنوانی هست که تو پنجره مرورگر نمایش داده میشه، طبیعی هست و برای همه همینطور هست
      موفق باشید

  6. CaeZer

    سلام دوست عزیز

    بنده از روش عوض محدودیت متن برای قسمت دسته ها استفاده میکنم.

    ولی وقتی به the_excerpt تغییر میدم . دکمه ادامه مطلب حذف میشه .

    چطور میتونم این مشکل رو رفع کنم ؟

    تشکر

    1. امیر خلجی مهر

      درود
      اسکریت‌شاتی از پیش و پس از تغییرات تهیه کنید چون دکمه ادامه نوشته برای پوسته شما هست و ارتباطی به این توابع نداره.

  7. مهدی

    سلام
    من از کد بالا استفاده کردم ولی این خطا رو داد لطفا راهنمایی کنید.
    Parse error: syntax error, unexpected ‘else’ (T_ELSE) in /home/mehdi/www/work/wp-content/themes/mytheme /index.php on line 65

    این از فایل فانشکین من
    __( ‘منوی بالا’ )
    )
    );
    }
    add_action( ‘init’, ‘register_my_menus’ );

    function limit_title($title, $n){
    if ( strlen ($title) > $n )
    {
    echo mb_substr(the_title($before = ”, $after = ”, FALSE), 0, $n) . ‘…’;
    }
    else { the_title(); }
    }

    function the_content_limit($max_char, $more_link_text = ‘(ادامه)’, $stripteaser = 0, $more_file = ”) {
    $content = get_the_content($more_link_text, $stripteaser, $more_file);
    $content = apply_filters(‘the_content’, $content);
    $content = str_replace(‘]]>’, ‘]]>’, $content);
    $content = strip_tags($content,”);

    if (strlen($_GET[‘p’]) > 0) {
    echo “”;
    echo $content;
    echo ” “.”(ادامه)“;
    echo “”;
    }
    else if ((strlen($content)>$max_char) && ($espacio = strpos($content, ” “, $max_char ))) {
    $content = mb_substr($content, 0, $espacio);
    $content = $content;
    echo “”;
    echo $content;
    echo “…”;
    echo ” “.$more_link_text.”“;
    echo “”;
    }
    else { __( ‘منوی بالا’ )
    )
    );
    }
    add_action( ‘init’, ‘register_my_menus’ );

    function limit_title($title, $n){
    if ( strlen ($title) > $n )
    {
    echo mb_substr(the_title($before = ”, $after = ”, FALSE), 0, $n) . ‘…’;
    }
    else { the_title(); }
    }

    function the_content_limit($max_char, $more_link_text = ‘(ادامه)’, $stripteaser = 0, $more_file = ”) {
    $content = get_the_content($more_link_text, $stripteaser, $more_file);
    $content = apply_filters(‘the_content’, $content);
    $content = str_replace(‘]]>’, ‘]]>’, $content);
    $content = strip_tags($content,”);

    if (strlen($_GET[‘p’]) > 0) {
    echo “”;
    echo $content;
    echo ” “.”(ادامه)“;
    echo “”;
    }
    else if ((strlen($content)>$max_char) && ($espacio = strpos($content, ” “, $max_char ))) {
    $content = mb_substr($content, 0, $espacio);
    $content = $content;
    echo “”;
    echo $content;
    echo “…”;
    echo ” “.$more_link_text.”“;
    echo “”;
    }
    else {
    echo “”;
    echo $content;
    echo ” “.”(ادامه)“;
    echo “”;
    }
    }
    ?>
    echo “”;
    echo $content;
    echo ” “.”(ادامه)“;
    echo “”;
    }
    }
    ?>

    1. امیر خلجی مهر

      درود
      ببینید خط 65 فایل ایندکس چی هست
      برای اینکه زودتر به نتیجه برسید، مشکل را در انجمن مطرح کنید یا با دقت بیشتری نوشته رو مطالعه کنید:
      http://forum.wp-parsi.com/

  8. محمد جواد

    با سلام جناب بنده از این تابع استفاده کردم بعد از استفاده یک مشکلی پیش اومده که نمیتونم درستش کنم
    اولین عکس پستم نمایش داده نمیشه (که این خوبه) اما جاش یه کاراکتری اومده [caption]……[/caption]

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

  9. علیرضا

    سلام
    یه کد ساده پیدا کردم گفتم بزارم بقیه هم استفاده کنن :

    بدون شرط خودش اگه از حد بیشتر شه … میزاره

  10. لواسانی

    سلام جناب خلجی مهر
    لواسانی هستم که زیاد زحمت میدم بهتون
    یه سوال در مورد مطلب بالا دارم
    این محدودیت برای صفحات هم هست ؟
    ما الان از قالب بی تم استفاده می کنیم و تا یه جایی می تونیم محتوا داخل صفحات بگذاریم . بعد از اون حد هر چی مطلب می گذاریم بعد از به روز رسانی بخش اضافه به صورت خودکار حذف می شه و نه در ادمین می مونه نه در نمایش صفحه.
    لطفا راهنمایی بفرمایید ممنون می شم

    1. امیر خلجی مهر

      درود آقای لواسانی، زنده باشید
      با بکارگیری توابعی که در پست آمده است، برگه، نوشته، ابزارک یا هر بخش دیگری تفاوتی ندارد و میتوان در همه‌جا از آنها استفاده کرد.

      پوسته‌های آماده بیشتر کنترل‌شان در خود سایت هست و اصولا نباید چنین مواردی را در پیشخوان ایجاد کنند، بهترین حالت این است که برای دقایقی پوسته پیش‌فرض وردپرس را فعال کنید و بررسی کنید که آیا این مشکل هنوز پابرجا هست یا خیر.

  11. Ehsan

    سلام عالی بود
    نمونه رو می تونید توی عنوان های صفحه اول ببینید خیلی خوب شد، لینک می ذارم نتیجه رو دوستان ببیند
    https://poweren.ir

  12. احسان

    سلام

    ممنون از مطلب کاربردیتون
    فقط من به غیر از موارد بالا میخوام کپشنی که در صفحه اصلی نمایش داده میشه رو محدود کنم یه عکس داریم یه تیتر و یه توضیحات چکیده که معمولا کمو زیاد نمایش داده میشه و یکنواختی صفحه رو به هم میریزه میخوام بدونمهم در حالت عادی و هم در افزونه ویژوال بخوام تعداد این نوع کاراکتر رو تنظیم کنم چطور باید اقدام کنم .
    تشکر

    1. امیر خلجی مهر

      درود
      بهتر است این پرسش را از فروشنده و یا پشتیبان افزونه ویژوال کامپوزر داشته باشید.

  13. رضا

    توضیحات کاااااااااااااااااااااااااااااااااااامل وعااااااااااااالی
    ممنون
    ممنون
    ممنون
    ممنون
    ممنون

  14. Ahj

    سلام
    ببخشید یه سوال داشتم خدمتتون
    علت اینکه
    سایت مطالب کوتاه رو نمایش نمیده چیه؟
    منظورم اینه یه پستی در سایت منتشر کردم
    اما بخاطر اینکه دو خط بیشتر نیست ، در سایت نمایش نمیده؟

    به نظرتون علت این مشکل چیه ؟
    ممنون میشم راهنمای کنید و پاسخ خودتون به ایمیلم ارسال کنید
    با تشکر

دیدگاه خود را بنویسید

ماندگار وب - 1400