• اطلاعیه ها

    • Morteza

      باهم بسازیم: اطلس ووکامرس و وردپرس   14/07/96

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

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

20 پست در این موضوع قرار دارد

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

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

هست .

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

 

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

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

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

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

0

به اشتراک گذاری این پست


لینک به پست

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

به جای 

<?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>';
}}
?>

 

1

به اشتراک گذاری این پست


لینک به پست
در 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>';
}}
?>

 

 

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

1

به اشتراک گذاری این پست


لینک به پست

سلام

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

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

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

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

 

1

به اشتراک گذاری این پست


لینک به پست

 

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

 

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

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

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

سلام

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


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

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


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

 

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

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

1

به اشتراک گذاری این پست


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

سلام

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


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

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


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

 

 

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

 

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

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

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

 

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

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

1

به اشتراک گذاری این پست


لینک به پست

دوستان کسی نمیتونه کمک کنه ؟

0

به اشتراک گذاری این پست


لینک به پست

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

0

به اشتراک گذاری این پست


لینک به پست
در 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
1

به اشتراک گذاری این پست


لینک به پست

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

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

 

موفق باشید

ویرایش شده در توسط naghmesara
1

به اشتراک گذاری این پست


لینک به پست
در 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); ?>

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

0

به اشتراک گذاری این پست


لینک به پست

درود بر شما

نقل قول

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

خواهش میکنم.

نقل قول

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


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

از کد :


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

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

بله

 

موفق باشید

1

به اشتراک گذاری این پست


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

درود بر شما

خواهش میکنم.

بله

 

موفق باشید

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

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

 

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

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

0

به اشتراک گذاری این پست


لینک به پست
نقل قول

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

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

 

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

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

بسیار خوب.

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

 

موفق باشید

1

به اشتراک گذاری این پست


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

بسیار خوب.

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

 

موفق باشید

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

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

0

به اشتراک گذاری این پست


لینک به پست

درود بر شما

 

تابع ای را که درون 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
1

به اشتراک گذاری این پست


لینک به پست

درود مجدد

 

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

<?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
1

به اشتراک گذاری این پست


لینک به پست
در در ۱۳۹۶/۱/۱۱ ه‍.ش. 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>';
    }
}
?>

 

 

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

0

به اشتراک گذاری این پست


لینک به پست

درود بر شما

نقل قول

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

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

نقل قول

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

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

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

<?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
1

به اشتراک گذاری این پست


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

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

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

 

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

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

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

 

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

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

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

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری