رفتن به مطلب

دلیل ارور Invalid argument supplied for foreach() در این کد


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

با سلام خدمت دوستان

توابعی رو نوشتم که توسط اونها اگر مطالبی که منشر میشه دارای دسته مشایه در یکی از 3 کاستوم تاکسونومی series,vips و course در کد زیر باشه سایر مطالبی که دارای دسته مشابه در هر یک از این 3 تاکسونومی باشه رو در صفحه single بصورت لیست نشون میده بطور مثال اگر مطلب شماره یک عضو دسته ای در تاکسونومی vips با عنوان طراحی وب باشه زمانی که مطلب شماره 2 در سایت منتشر بشه و اون هم دارای دسته مشابه در تاکسونومی vips با مطلب شماره یک باشه لینک مطلب شماره یک در صفحه single مطلب شماره 2 نمایش داده میشه و برای سایر تاکسونومی ها هم به همین صورت این کار رو برای این انجام دادم که مثلا اگر در سای داره یه دوره 10 قسمتی آموزشی برگزار میشه در انتهای هر مطلب جدید سایر قسمت های مرتبط به این سری آموزشی هم نمایش داده بشه...حالا مشکلی که وجود داره اینه که زمانی که مطالی هر یک از این تاکسونمی ها رو کاربر باز کنه مثلا مطلب دارای دستع مشابه در تاکسونومی vips برای دستور foreach دو تاکسونمومی دیگه ارور Invalid argument supplied for foreach() نمایش میده از دوستان زحمت نیست اشکال کد رو بهم بگین و اصلاحش کنید ممنون...


<?php foreach((get_the_terms($post->ID,'vips')) as $term) { echo '<p> </p>'; } ?>
<?php foreach((get_the_terms($post->ID,'series')) as $term) { echo '<p> </p>'; } ?>
<?php foreach((get_the_terms($post->ID,'course')) as $term) { echo '<p> </p>'; } ?>
<?php

$args = array(
'post_type' => 'post',
'order' => 'DESC',
'orderby' => 'date',
'tax_query' => array(
array(
'taxonomy' =>'course',

'field' => 'term_id',
'terms' =>$term
)
)
);
$r_query = new WP_Query($args);
if ($r_query->have_posts()) {
echo '<div class="course-container">
<div id="flip"><span>لیست سایر قسمت های این مطلب که تاکنون منتشر شده است...</span><div class="arrow-down"></div></div>
<div id="panel"><div id="course_posts_list" style="margin:0px !important" class="alert alert-info">';

while ($r_query->have_posts()) {
$r_query->the_post();
echo '<li><span class="list-icon">   </span><a target="_blank" title="'. get_the_title().'" href="'. get_permalink().'">' . get_the_title() . '
</a> <span class="date-tab hidden-xs"> (تاریخ انتشار :'.the_date('d F Y','','',false).')</span></li>';
}echo '</div></div></div>';}
wp_reset_postdata();
?>
<?php

$args = array(
'post_type' => 'post',
'order' => 'DESC',
'orderby' => 'date',
'tax_query' => array(
array(
'taxonomy' =>'series',

'field' => 'term_id',
'terms' =>$term
)
)
);
$r_query = new WP_Query($args);
if ($r_query->have_posts()) {
echo '<div class="course-container">
<div id="flip"><span>لیست سایر قسمت های این مطلب که تاکنون منتشر شده است...</span><div class="arrow-down"></div></div>
<div id="panel"><div id="course_posts_list" style="margin:0px !important" class="alert alert-info">';

while ($r_query->have_posts()) {
$r_query->the_post();
echo '<li><span class="list-icon">   </span><a target="_blank" title="'. get_the_title().'" href="'. get_permalink().'">' . get_the_title() . '
</a> <span class="date-tab hidden-xs"> (تاریخ انتشار :'.the_date('d F Y','','',false).')</span></li>';
}echo '</div></div></div>';}
wp_reset_postdata();
?>
<?php

$args = array(
'post_type' => 'post',
'order' => 'DESC',
'orderby' => 'date',
'tax_query' => array(
array(
'taxonomy' =>'vips',
'field' => 'term_id',
'terms' =>$term
)
)
);
$r_query = new WP_Query($args);
if ($r_query->have_posts()) {
echo '<div class="course-container">
<div id="flip"><span>لیست سایر قسمت های این مطلب که تاکنون منتشر شده است...</span><div class="arrow-down"></div></div>
<div id="panel"><div id="course_posts_list" style="margin:0px !important" class="alert alert-info">';

while ($r_query->have_posts()) {
$r_query->the_post();
echo '<li><span class="list-icon">   </span><a target="_blank" title="'. get_the_title().'" href="'. get_permalink().'">' . get_the_title() . '
</a> <span class="date-tab hidden-xs"> (تاریخ انتشار :'.the_date('d F Y','','',false).')</span></li>';
}echo '</div></div></div>';}
wp_reset_postdata();
?>

لینک به ارسال

به جای سه خط اول این خط را بگذارید و تست کنید


<?php
$post_type = get_post_type();
foreach((get_the_terms($post->ID, $post_type)) as $term) { echo '<p> </p>'; } ?>

لینک به ارسال

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

باز هم از تمام کمک ها و پاسخ هایی که به سوالات بنده میدید سپاس گذارم.


<?php
$custom_taxonomy =array ( 'vips','course','series');
foreach((get_the_terms($post->ID, $custom_taxonomy)) as $term) { echo '<p> </p>'; }
?>

لینک به ارسال

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

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

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

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

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

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

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

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

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