رفتن به مطلب

کد php مخصوص نمایش دسته بندی مطلب در فایل single.php


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

سلام . ببخشید همونطور که میدونید ، کد نمایش دسته بندی در فایل سینگل

<?php the_category(', '); ?>

هست .

این کد رو وقتی در سینگل میزارم ، تمامی دسته بندی ها و زیر دسته هاشونو نشون میده ، سئوالی که من دارم ، اینه که چه کدی رو باید بزارم که فقط زیر دسته ی آخر رو نشون بده و مابقی رو نشون نده .

 

مثلا : من یک مطلب دارم که دسته بندیش به شکل زیره :

وردپرس > افزونه های وردپرس > افزونه های رایگان

در حالت پیش فرض ، در فایل سینگل ، کل دسته بندی ها به نمایش درمیاد و من میخوام که فقط زیر دسته ی آخر به نمایش دربیاد ، مثلا در مثال بالا ، فقط افزونه های رایگان به نمایش دربیاد و مابقی رو نشون نده .

آیا میشه همچین کاری کرد ؟

لینک به ارسال

اتفاقا خود منم امروز دنبال این کد بودم اما هنوز تستش نکردم فکر کنم کار کنه، فقط دسته بندی فرزند رو نشون میده یه تست بکنید ببینید براتون جواب میده یا نه

به جای 

<?php the_category(', '); ?>

از این استفاده کن

<?php
foreach((get_the_category()) as $childcat) {
if (cat_is_ancestor_of(10, $childcat)) {
echo '<a href="'.get_category_link($childcat->cat_ID).'">';
 echo $childcat->cat_name . '</a>';
}}
?>

 

لینک به ارسال
در 3 ساعت قبل، mohammad_reza00 گفته است :

اتفاقا خود منم امروز دنبال این کد بودم اما هنوز تستش نکردم فکر کنم کار کنه، فقط دسته بندی فرزند رو نشون میده یه تست بکنید ببینید براتون جواب میده یا نه

به جای 


<?php the_category(', '); ?>

از این استفاده کن


<?php
foreach((get_the_category()) as $childcat) {
if (cat_is_ancestor_of(10, $childcat)) {
echo '<a href="'.get_category_link($childcat->cat_ID).'">';
 echo $childcat->cat_name . '</a>';
}}
?>

 

 

تشکر از شما ، ولی متأسفانه وقتی این کد رو جایگزین کردم ، کلا هیچ دسته بندی ای رو نشون نداد !

لینک به ارسال

سلام

از این کد در  داخل حلقه وردپرس میتونید استفاده کنید.

<?php the_category('', 'single'); ?>

این کد هم برای خارج حلقه وردپرس

<?php the_category('', 'single', $post->ID); ?>

 

لینک به ارسال

 

در 10 ساعت قبل، آرشام . رادمهر گفته است :

 

تشکر از شما ، ولی متأسفانه وقتی این کد رو جایگزین کردم ، کلا هیچ دسته بندی ای رو نشون نداد !

شرمنده تستش نکرده بودم از یه سایت خارجی برداشته بودم

در 2 ساعت قبل، rezakianoosh گفته است :

سلام

از این کد در  داخل حلقه وردپرس میتونید استفاده کنید.


<?php the_category('', 'single'); ?>

این کد هم برای خارج حلقه وردپرس


<?php the_category('', 'single', $post->ID); ?>

 

کد اولی رو داخل حلقه تست کردم همه دسته ها رو نشون میداد

هم دسته اصلی هم زیر دسته فقط از هم جدا نشون میداد و پست سر هم نشون نمیداد

لینک به ارسال
در 8 ساعت قبل، rezakianoosh گفته است :

سلام

از این کد در  داخل حلقه وردپرس میتونید استفاده کنید.


<?php the_category('', 'single'); ?>

این کد هم برای خارج حلقه وردپرس


<?php the_category('', 'single', $post->ID); ?>

 

 

در 5 ساعت قبل، mohammad_reza00 گفته است :

 

شرمنده تستش نکرده بودم از یه سایت خارجی برداشته بودم

کد اولی رو داخل حلقه تست کردم همه دسته ها رو نشون میداد

هم دسته اصلی هم زیر دسته فقط از هم جدا نشون میداد و پست سر هم نشون نمیداد

 

ممنون از شما ، ولی همونطور که آقای محمد رضا گفتن ، بنده هم که تست کردم ، کد به درستی کار نکرد و کلا اون چیزی که مد نظرم بود رو اعمال نکرد .

آیا واقعا کدی در این زمینه وجود نداره ؟

لینک به ارسال
  • 3 هفته بعد...

سلام مجدد . بعد از اینهمه وقت ، هنوز راه حلی واسه این مورد پیدا نشده ؟ هرکاری کردم نشد ! خواهشا اگه میدونید کمک کنید .

لینک به ارسال
در 55 دقیقه قبل، آرشام . رادمهر گفته است :

سلام مجدد . بعد از اینهمه وقت ، هنوز راه حلی واسه این مورد پیدا نشده ؟ هرکاری کردم نشد ! خواهشا اگه میدونید کمک کنید .

درود

تابع مورد نظر رو براتون نوشتم.

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

<?php
function child_cat ($pid) {
	$cat_arr = wp_get_post_categories ($pid);
    $child_id = max ($cat_arr);
    $child_name = get_the_category_by_ID ($child_id);
    $child_link = get_category_link ($child_id);
	echo '<a href="'. $child_link .'" rel="category tag">'. $child_name .'</a>';
}
?>
ویرایش شده توسط naghmesara
لینک به ارسال

فراموش کردم و جهت نمایش آخرین دسته فرزند در فایل single.php کد زیر را قرار دهید.

<?php child_cat ($post->ID); ?>

 

موفق باشید

ویرایش شده توسط naghmesara
لینک به ارسال
در 26 دقیقه قبل، naghmesara گفته است :

درود

تابع مورد نظر رو براتون نوشتم.

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

 


function child_cat ($pid) {
	    $cat_arr = wp_get_post_categories ($pid);
    $child_id = end ($cat_arr);
    $child_name = get_the_category_by_ID ($child_id);
    $child_link = get_category_link ($child_id);
	    echo '<a href="'. $child_link .'" rel="category tag">'. $child_name .'</a>';
}

 

خیلی لطف کردید ، ممنون از شما

در 19 دقیقه قبل، naghmesara گفته است :

فراموش کردم و جهت نمایش آخرین دسته فرزند در فایل single.php کد زیر را قرار دهید.


child_cat ($post->ID);

موفق باشید

یعنی به جای کد :

<?php the_category(', '); ?>

از کد :

<?php child_cat ($post->ID); ?>

در فایل سینگل استفاده کنم ؟

لینک به ارسال

درود بر شما

نقل قول

خیلی لطف کردید ، ممنون از شما

خواهش میکنم.

نقل قول

یعنی به جای کد :


<?php the_category(', '); ?>

از کد :


<?php child_cat ($post->ID); ?>

در فایل سینگل استفاده کنم ؟

بله

 

موفق باشید

لینک به ارسال
در 5 دقیقه قبل، naghmesara گفته است :

درود بر شما

خواهش میکنم.

بله

 

موفق باشید

خیلی ممنون ، کد و تابعی که دادید ، جواب داد و کار کرد ، ولی فقط یه مشکل داشت و اون اینکه ، آخرین دسته ی فرزند رو نشون نمیده ، بلکه اولین دسته ی فرزند رو نشون میده ، مثلا من یه دسته بندی به شکل زیر دارم :

وردپرس > آموزش ها > آموزش ترجمه افزونه

 

بعدا به جای اینکه آموزش ترجمه افزونه رو نشون بده ، آموزش ها رو نشون میده .

اگه این مشکل هم حل شه ، عالی میشه .

لینک به ارسال
نقل قول

خیلی ممنون ، کد و تابعی که دادید ، جواب داد و کار کرد ، ولی فقط یه مشکل داشت و اون اینکه ، آخرین دسته ی فرزند رو نشون نمیده ، بلکه اولین دسته ی فرزند رو نشون میده ، مثلا من یه دسته بندی به شکل زیر دارم :

وردپرس > آموزش ها > آموزش ترجمه افزونه

 

بعدا به جای اینکه آموزش ترجمه افزونه رو نشون بده ، آموزش ها رو نشون میده .

اگه این مشکل هم حل شه ، عالی میشه .

بسیار خوب.

بنده بررسی میکنم به نتیجه رسیدم تاپیک رو آپدیت میکنم.

 

موفق باشید

لینک به ارسال
در 10 دقیقه قبل، naghmesara گفته است :

بسیار خوب.

بنده بررسی میکنم به نتیجه رسیدم تاپیک رو آپدیت میکنم.

 

موفق باشید

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

بازم ممنون از شما

لینک به ارسال

درود بر شما

 

تابع ای را که درون functions.php قرار دادید با تابع زیر جایگزین کنید.

 

<?php
function child_cat ($pid) {
    $category = get_the_category($pid);
    $category_parent_id = $category[0]->category_parent;
    if ( $category_parent_id != 0 ) {
        $category_parent = get_term( $category_parent_id, 'category' );
        $cat_par_id = $category_parent->term_id;
    } else {
        $cat_par_id = $category[0]->term_id;
    }
    foreach(($category) as $childcat) {
    if (cat_is_ancestor_of($cat_par_id, $childcat)) {
        $child = '<a href="'.get_category_link($childcat->cat_ID).'" rel="category tag">'. $childcat->cat_name .'</a>';
    }}
    if (!empty($child)) {
        echo $child;
    }
    else {
        $par_name = get_the_category_by_ID ($cat_par_id);
        $par_link = get_category_link ($cat_par_id);
        echo '<a href="'. $par_link .'" rel="category tag">'. $par_name .'</a>';
    }
}
?>

 

موید باشید

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

درود مجدد

 

آخرین کدی هم که فرستادم همیشه درست عمل نمیکنه. در نهایت به کد زیر رسیدم.

<?php
	function child_cat ($pid) {
	    $cat_arr = wp_get_post_categories ($pid);
    foreach ($cat_arr as $cat) {
    $children = get_categories( array( 'child_of' => $cat, 'taxonomy' => 'category' ) );
        if (empty($children)) { $child_id = $cat; }
    }
	    $child_name = get_the_category_by_ID ($child_id);
    $child_link = get_category_link ($child_id);
	    echo '<a href="'. $child_link .'" rel="category tag">'. $child_name .'</a>';
	}
?>
ویرایش شده توسط naghmesara
لینک به ارسال
در در ۱۳۹۶/۱/۱۱ ه‍.ش. at 14:36، naghmesara گفته است :

درود مجدد

 

آخرین کدی هم که فرستادم همیشه درست عمل نمیکنه. در نهایت به کد زیر رسیدم.


<?php
	function child_cat ($pid) {
	    $cat_arr = wp_get_post_categories ($pid);
    foreach ($cat_arr as $cat) {
    $children = get_categories( array( 'child_of' => $cat, 'taxonomy' => 'category' ) );
        if (empty($children)) { $child_id = $cat; }
    }
	    $child_name = get_the_category_by_ID ($child_id);
    $child_link = get_category_link ($child_id);
	    echo '<a href="'. $child_link .'" rel="category tag">'. $child_name .'</a>';
	}
?>

 

قبل از هرچیز ، باید ازتون بی نهایت تشکر کنم واسه وقتی که میزارید و راهنمایی که کردید ؛ اگه چهار نفر کاربلد و دلسوز مثله شما در این انجمن فعالیت کنن ، دوباره این انجمن به روزهای اوج خودش برمیگرده ؛ زمانی که من در این انجمن عضو شدم اینقدر افراد حرفه ای و کاربلد در انجمن فعال بودن که هیچ تاپیکی ، حتی تخصصی ، بدون پاسخ نمیموند ولی متأسفانه چندوقتیه که فعالیت افراد حرفه ای این انجمن خیلی کمرنگ شده که من دیدم خیلی از کاربران هم به این مشکل اعتراض کردن ، ولی ظاهرا چاره ای واسش نیست !

 

بگذریم ...

 

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

به عنوان مثال اگه بخوایم یک نوشته رو فقط در دسته ی مادر منتشر کنیم و یا اینکه بخوایم موضوع یک نوشته رو ، دسته مادر و اولین زیر دسته انتخاب کنیم ، ارور میده و حتما باید ، تا آخرین زیردسته ، تیک بخوره تا به خوبی عمل کنه .

 

درمورد کد 

در در ۱۳۹۶/۱/۱۱ ه‍.ش. at 04:35، naghmesara گفته است :

 


<?php
function child_cat ($pid) {
    $category = get_the_category($pid);
    $category_parent_id = $category[0]->category_parent;
    if ( $category_parent_id != 0 ) {
        $category_parent = get_term( $category_parent_id, 'category' );
        $cat_par_id = $category_parent->term_id;
    } else {
        $cat_par_id = $category[0]->term_id;
    }
    foreach(($category) as $childcat) {
    if (cat_is_ancestor_of($cat_par_id, $childcat)) {
        $child = '<a href="'.get_category_link($childcat->cat_ID).'" rel="category tag">'. $childcat->cat_name .'</a>';
    }}
    if (!empty($child)) {
        echo $child;
    }
    else {
        $par_name = get_the_category_by_ID ($cat_par_id);
        $par_link = get_category_link ($cat_par_id);
        echo '<a href="'. $par_link .'" rel="category tag">'. $par_name .'</a>';
    }
}
?>

 

 

میشه بفرمایید مشکلش کجا بود و چه زمان هایی درست عمل نمیکنه ؟

لینک به ارسال

درود بر شما

نقل قول

قبل از هرچیز ، باید ازتون بی نهایت تشکر کنم واسه وقتی که میزارید و راهنمایی که کردید ؛ اگه چهار نفر کاربلد و دلسوز مثله شما در این انجمن فعالیت کنن ، دوباره این انجمن به روزهای اوج خودش برمیگرده ؛ زمانی که من در این انجمن عضو شدم اینقدر افراد حرفه ای و کاربلد در انجمن فعال بودن که هیچ تاپیکی ، حتی تخصصی ، بدون پاسخ نمیموند ولی متأسفانه چندوقتیه که فعالیت افراد حرفه ای این انجمن خیلی کمرنگ شده که من دیدم خیلی از کاربران هم به این مشکل اعتراض کردن ، ولی ظاهرا چاره ای واسش نیست !

خواهش میکنم. بنده پیش اساتید انجمن درس پس میدم.

نقل قول

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

به عنوان مثال اگه بخوایم یک نوشته رو فقط در دسته ی مادر منتشر کنیم و یا اینکه بخوایم موضوع یک نوشته رو ، دسته مادر و اولین زیر دسته انتخاب کنیم ، ارور میده و حتما باید ، تا آخرین زیردسته ، تیک بخوره تا به خوبی عمل کنه .

طبق اصول سئو در دسته بندی های مادر-فرزندی باید از مادر تا آخرین فرزند مرتبط تیک بخوره. پس طبق استاندارد کد آخر صحیح است. برای رفع مشکل اینکه اگر دسته انتخاب شده مادری بدون فرزند بود ارور نده کد آخر به این شکل میشه:

<?php
    function child_cat ($pid) {
        $cat_arr = wp_get_post_categories ($pid);
    if (count ($cat_arr) > 1) {
    foreach ($cat_arr as $cat) {
    $children = get_categories( array( 'child_of' => $cat, 'taxonomy' => 'category' ) );
        if (empty($children)) { $child_id = $cat; }
    }
    } else { $child_id = $cat_arr[0] }
        $child_name = get_the_category_by_ID ($child_id);
    $child_link = get_category_link ($child_id);
        echo '<a href="'. $child_link .'" rel="category tag">'. $child_name .'</a>';
    }
?>
نقل قول

میشه بفرمایید مشکلش کجا بود و چه زمان هایی درست عمل نمیکنه ؟

در مورد این کد اگر آیدی زیر دسته اول از زیر دسته دوم کمتر باشه و آیدی زیر دسته دوم از زیر دسته سوم کمتر باشه و ... درست عمل میکنه در غیر اینصورت عملکردش اشتباهست.

موفق باشید

ویرایش شده توسط naghmesara
لینک به ارسال
در 2 ساعت قبل، naghmesara گفته است :

طبق اصول سئو در دسته بندی های مادر-فرزندی باید از مادر تا آخرین فرزند مرتبط تیک بخوره. پس طبق استاندارد کد آخر صحیح است.

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

 

در 2 ساعت قبل، naghmesara گفته است :

برای رفع مشکل اینکه اگر دسته انتخاب شده مادری بدون فرزند بود ارور نده کد آخر به این شکل میشه:

متأسفانه این کد آخری که دادید ، کلا ارور میده و سایت بالا نمیاد ( چه دسته فرزند انتخاب بشه ، چه انتخاب نشه و ... ) ؛ کد قبلی ، فقط در قسمت مطلب ارور میداد ولی این کد در هر صورتی ارور میده .

 

در 2 ساعت قبل، naghmesara گفته است :

در مورد این کد اگر آیدی زیر دسته اول از زیر دسته دوم کمتر باشه و آیدی زیر دسته دوم از زیر دسته سوم کمتر باشه و ... درست عمل میکنه در غیر اینصورت عملکردش اشتباهست.

این کدی که دادید ، همه چیزش خوبه و هیچ اروری هم نمیده ، اگه بشه در همین کد ، مشکلی که در بند بالا فرمودید هم حل بشه ، خیلی عالیه ، چون نه ارور میده و نه دیگه مشکلی داره .

لینک به ارسال
  • 2 سال بعد...
در در 4/4/2017 at 22:56، naghmesara گفته است :

<?php     function child_cat ($pid) {         $cat_arr = wp_get_post_categories ($pid);     if (count ($cat_arr) > 1) {     foreach ($cat_arr as $cat) {     $children = get_categories( array( 'child_of' => $cat, 'taxonomy' => 'category' ) );         if (empty($children)) { $child_id = $cat; }     }     } else { $child_id = $cat_arr[0] }         $child_name = get_the_category_by_ID ($child_id);     $child_link = get_category_link ($child_id);         echo '<a href="'. $child_link .'" rel="category tag">'. $child_name .'</a>';     } ?>

این کد رو قرار دادم میزنه سایت با مشکل مواجه هست اما کد قبلش درست کار کرد مشکلی نداره ؟ 

لینک به ارسال

یه مشکل دیگه اینکه 

مثلا یه مطلب در بخش های مادر نرم افزار با فرزند دانلود نرم افزار و همینطور در دسته مادر پست های اختصاصی قرار داده شده 

 

اما پست های اختصاصی رو نمایش میده 

 

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

لینک به ارسال

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

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

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

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

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

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

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

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

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