poolmaster

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

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

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

توابعی رو نوشتم که توسط اونها اگر مطالبی که منشر میشه دارای دسته مشایه در یکی از 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();
?>

0

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


لینک به پست

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


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

1

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


لینک به پست

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

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


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

1

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


لینک به پست

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

1

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


لینک به پست

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

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

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

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


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

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

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


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