رفتن به مطلب
دانیال

انتخاب مطلب تصادفی که با شرط get_field

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

سلام

وردپرس :

میخوام یه مطلب تصادفی انتخاب کنم که دارای شرط زیر باشه

if (get_field('dani'))

ویرایش شده توسط ایگل دیزاین

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


لینک به ارسال

<?php $args = array( 'numberposts' => 1, 'orderby' => 'rand' );$rand_posts = get_posts( $args );foreach( $rand_posts as $post ) : if (get_field('dani')){?>matalab<?php echo get_field('dani') ?><?php
} endforeach; ?>

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


لینک به ارسال

یعنی چی که می خواهید اون شرط را داشته باشه یعنی کوئری فقط برای مطالب دارای فیلد dani اجرا بشه یا در نتیجه اگر فیلد dani وجود داشت چاپش کنه

حالت اول باید ببینید نام متا تگی که افزونه می سازه هم dani یا چیزی بهش اضافه می کنه و کوئریتون می شه


<?php $args = array( 'numberposts' => 1, 'orderby' => 'rand', 'meta_key => 'dani' );?>

البته برای نوشتن صحیح تر و کاملتر کوئری می تونید از ژنراتور کوئری ساز استفاده کنید

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


لینک به ارسال

خیلی ممنون ولی هیچ تغییری نکرد


<?php get_header(); ?>
<?php
$args = array( 'numberposts' => 1, 'orderby' => 'rand', 'meta_key' => 'play_link' );
$rand_posts = get_posts( $args );
foreach( $rand_posts as $post ) :
?>
<div class="ranpost" >

<audio preload="false" >
<source src="<?php echo get_field('play_link'); ?>" type="audio/mpeg">
مرورگر شما از پخش صدا پشتیبانی نمی کند.
</audio>
</div>
<?php endforeach; ?>

<?php get_footer(); ?>

برای پخش آنلاین موزیک این کد رو نوشتم

به صورت رندم یه موزیک پخش میشه

ولی وقتی لینک پخش انلاین نداشته باشه که موزیکی نمیاد

باید موزیک هایی انتخاب شده باشن که فیلد مورد نظر خالی نباشه

ویرایش شده توسط ایگل دیزاین

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


لینک به ارسال
حالت اول باید ببینید نام متا تگی که افزونه می سازه هم dani یا چیزی بهش اضافه می کنه

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


لینک به ارسال

از کجا بفهمم دقیقا اسمش چیه ؟

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

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


لینک به ارسال

ظاهرا منظورم رو متوجه نشدید

باید موزیک هایی رو نشون بده که


get_field['dani] != ''

یعنی مقدارش خالی نباشه

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


لینک به ارسال

به بدشانسی مربوط نمیشه

من منظور شما را متوجه شدم ولی منتظر نباشید من برم مستندات افزونه تون رو بخونم و ببینم نام فیلدها را چی می گذاره

خودتون باید اینکار را بکنید

اصولش اینه که شما نتونید فیلدی که افزونه می سازه را با کوئری وردپرس بخونید و ممکنه این افزونه هم همینتطور باشه ولی چون ساخت شرکت اتوماتیکه که سازنده وردپرسه ممکنه از توابع استاندارد استفاده کرده باشه که در این صورت در مستنداتش (documents) در موردش باید توضیح داده باشه

اگر هم نشد باید فیلدهاتون رو بدون افزونه بسازید و با کوئری که عرض شد احضارشون کنید

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


لینک به ارسال

خوب شما میگید برید بگردید

من که نمیدونم دنبال چی بگردم :((

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


لینک به ارسال

بگردید دنبال تابع


add_post_meta($id, $key, $value);

و ببینید بجای $key چی گذاشته شده

یا در دیتابیستون ببینید در جدول wp_postmeta متاهایی که ساختید با چه نامی ذخیره می شند.

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


لینک به ارسال

13178141433657220223_2014-10-26_183927.jpg

من این دو کد رو امتحان میکنم


$args = array( 'numberposts' => 1, 'orderby' => 'rand', 'meta_key' => '_play_link' );

و


$args = array( 'numberposts' => 1, 'orderby' => 'rand', 'meta_key' => 'play_link' );

ولی باززم مطالبی که فیلد پخش آنلاینشون خالیه نمایش داده میشن

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


لینک به ارسال

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

اینکار برام مقدور نیست وارد phpmyadmin بشید و چک کنید در جدول wp_postsmeta و ستون meta_value مقدار play_link چیه اون مقدار را در کوئری بگذارید

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


لینک به ارسال

خوب من همین کارو میکنم

عکس :

12774141440954414487_2014-10-27_145422.jpg

کد :


<?php get_header(); ?>
<?php
$args = array( 'numberposts' => 1, 'orderby' => 'rand', 'meta_key' => 'field_5447b824fcad5' );
$rand_posts = get_posts( $args );
add_post_meta($id, $key, $value);

foreach( $rand_posts as $post ) :
?>
<div class="ranpost" <?php if(has_post_thumbnail()) {?>style="background: url('<?php echo $eagle_thumbnail_url = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );?>') center center no-repeat " <?php }?>>
<?php if(get_field('play_link')){?>
<audio preload="false" >
<source src="<?php the_field('play_link'); ?>" type="audio/mpeg">
مرورگر شما از پخش صدا پشتیبانی نمی کند.
</audio>
<?php } ?>
</div>
<?php endforeach; ?>

<?php get_footer(); ?>

خروجی : خالی

والا دیگه نمیدونم چیکار کنم

خواهش میکنم درست بگید چیکار کنم

یه هفتس سرگردونم

ویرایش شده توسط ایگل دیزاین

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


لینک به ارسال

با اون هم درست کردم

ولی باز هم مطالبی که فیلد پخش آنلاینشون خالیه نمایش داده میشن


<?php get_header(); ?>
<?php
//$args = array( 'numberposts' => 1, 'orderby' => 'rand', 'meta_key' => 'play_link' );
$rand_music= new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'cat' => '1',
'order' => 'DESC',
'orderby' => 'rand',
'posts_per_page' =>'1',
'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
));
$rand_posts = get_posts( $args );
if($rand_music->have_posts()) :
while($rand_music->have_posts()) : $rand_music->the_post();
?>
<div class="ranpost" <?php if(has_post_thumbnail()) {?>style="background: url('<?php echo $eagle_thumbnail_url = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );?>') center center no-repeat " <?php }?>>

<audio preload="false" >
<source src="<?php echo get_post_meta($post->ID, 'play_link', true); ?>" type="audio/mpeg">
مرورگر شما از پخش صدا پشتیبانی نمی کند.
</audio>
</div>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php get_footer(); ?>

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


لینک به ارسال

با کدوم ژنراتور این کد رو ساختید (ژنراتور رو من نوشتم ولی یه ربع طول کشید تا از کدهاتون سر در بیارم!


<?php
get_header();
$args = new WP_Query(array(
'post_type' => 'post',
'post_status' => 'publish',
'cat' => '1',
'meta_query' => array(
array(
'key' => 'play_link',
'value' => '',
'compare' => '!=',
),
),
'orderby' => 'rand',
'posts_per_page' =>'1',
'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1
));
$query = new WP_Query( $args );
if($query ->have_posts()) :
while($query ->have_posts()) : $query ->the_post();
?>
<div class="ranpost" <?php if(has_post_thumbnail()) {?>style="background: url('<?php echo $eagle_thumbnail_url = wp_get_attachment_url( get_post_thumbnail_id($post->ID) );?>') center center no-repeat " <?php }?>>

<audio preload="false" >
<source src="<?php echo get_post_meta($post->ID, 'play_link', true); ?>" type="audio/mpeg">
مرورگر شما از پخش صدا پشتیبانی نمی کند.
</audio>
</div>
<?php endwhile; ?>
<?php endif; ?>
<?php wp_reset_query();
get_footer();
?>

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

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


لینک به ارسال

با همونی که لینک دادید

(من بیشتر طراحی میکنم تا برنامه نویسی) (با آرایه ها هم کار نکردم زیاد)

خیلی ممنون

ولی این مشکل اصلی حل که نشد هیچ

دو تا مطلب نشون داده میشه

:(

ویرایش شده توسط ایگل دیزاین

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


لینک به ارسال

شما این کد رو بدون دستکاری قرار دادید و دوتا مطلب برگردوند؟!

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

لطف کنید کل کد رو جایگزین کنید و تابع get_post را با کوئری ترکیب نکنید کد تست شده و درسته

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


لینک به ارسال

کل کد خروجیش 2 مطلب بود

ویرایش شده توسط ایگل دیزاین

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


لینک به ارسال

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

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

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

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

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

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

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

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


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