رفتن به مطلب

پست تایپ سفارشی


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

با سلام

بنده پست تایپی درست کردم برای بخش موزیک حالا میخوام 2تا چک باکس براش درست کنم ( مثلاً ایرانی و خارجی ) ، که وقتی موقع ارسال پست تیک ایرانی زده شد در یک قسمت جدا نشون بده وقتی هم خارجی زده شد در یک قسمت جدای دیگه !

از کدهای زیر استفاده میکنم برای بخش نمایش پست :

<?php
$args=array('post_type'=>'song','posts_per_page'=>get_option('posts_per_page'),'orderby'=>'modified','order'=>'DESC');
$loop=new WP_Query($args);
if($loop->have_posts()):
while($loop->have_posts()):$loop->the_post();
$song_artist=get_post_meta(get_the_ID(),'song_artist',true);
$song_name=get_post_meta(get_the_ID(),'song_name',true);
$song_cover=get_post_meta(get_the_ID(),'song_cover',true);
if($song_cover=='')$song_cover=get_bloginfo('template_url').'/images/not_available.jpg';
$song_player=get_post_meta(get_the_ID(),'song_player',true);
$song_special=get_post_meta(get_the_ID(),'song_special',true);
?>

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

با تشکر

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

سلام مجدد

بنده تا اینجا پیش رفتم اما گیر کردم !

اول از همه کدهای زیر رو به فانکشن اضافه کردم :



add_action('admin_init','my_video_meta');
add_action('save_post','add_video_fields',10,2);
function my_video_meta(){
add_meta_box('video_meta_box','Video Details','display_video_meta_box','video');
}

function display_video_meta_box($video) {
$video_artist=get_post_meta($video->ID,'video_artist',true);
$video_name=get_post_meta($video->ID,'video_name',true);
$video_arrangement=get_post_meta($video->ID,'video_arrangement',true);
$video_mixmastering=get_post_meta($video->ID,'video_mixmastering',true);
$video_music=get_post_meta($video->ID,'video_music',true);
$video_lyric=get_post_meta($video->ID,'video_lyric',true);
$video_cover=get_post_meta($video->ID,'video_cover',true);
$video_type=get_post_meta($video->ID,'video_type',true);
$video_director=get_post_meta($video->ID,'video_director',true);
?>
<div dir="ltr">
<table>
<tr><td>Video Type: </td><td>
<select name="video_type">
<option value="Persian"<?php selected($video_type,'Persian'); ?>>Persian</option>
<option value="Foreign"<?php selected($video_type,'Foreign'); ?>>Foreign</option>
</select>
</td></tr>
<tr><td>Cover URL: </td><td><input type="text" name="video_cover" value="<?php echo $video_cover; ?>" size="50"></td></tr>
<tr><td>Artist: </td><td><input type="text" name="video_artist" value="<?php echo $video_artist; ?>" size="50"></td></tr>
<tr><td>Video Name: </td><td><input type="text" name="video_name" value="<?php echo $video_name; ?>" size="50"></td></tr>
<tr><td>Arrangement: </td><td><input type="text" name="video_arrangement" value="<?php echo $video_arrangement; ?>" size="50"></td></tr>
<tr><td>Mix & Mastering: </td><td><input type="text" name="video_mixmastering" value="<?php echo $video_mixmastering; ?>" size="50"></td></tr>
<tr><td>Music: </td><td><input type="text" name="video_music" value="<?php echo $video_music; ?>" size="50"></td></tr>
<tr><td>Lyric: </td><td><input type="text" name="video_lyric" value="<?php echo $video_lyric; ?>" size="50"></td></tr>
<tr><td>Director: </td><td><input type="text" name="video_director" value="<?php echo $video_director; ?>" size="50"></td></tr>
<tr><td>Other: </td><td><input type="text" name="video_other" value="<?php echo $video_other; ?>" size="50"></td></tr>
<tr><td>Special / Recommend: </td><td>
<input type="checkbox" name="video_special" <?php if($video_special=="on"){echo"checked";} ?>><label>Special</label>
<input type="checkbox" name="video_recommend" <?php if($video_recommend=="on"){echo"checked";} ?>><label>Recommend</label>
</td></tr>
</table>
</div>
<?php
}

function add_video_fields($video_id,$video){
if($video->post_type=='video'){
if($_POST['video_type']!='')update_post_meta($video_id,'video_type',$_POST['video_type']);
if($_POST['video_cover']!='')update_post_meta($video_id,'video_cover',$_POST['video_cover']);
if($_POST['video_artist']!='')update_post_meta($video_id,'video_artist',$_POST['video_artist']);
if($_POST['video_name']!='')update_post_meta($video_id,'video_name',$_POST['video_name']);
if($_POST['video_arrangement']!='')update_post_meta($video_id,'video_arrangement',$_POST['video_arrangement']);
if($_POST['video_mixmastering']!='')update_post_meta($video_id,'video_mixmastering',$_POST['video_mixmastering']);
if($_POST['video_music']!='')update_post_meta($video_id,'video_music',$_POST['video_music']);
if($_POST['video_lyric']!='')update_post_meta($video_id,'video_lyric',$_POST['video_lyric']);
if($_POST['video_director']!='')update_post_meta($video_id,'video_director',$_POST['video_director']);
if($_POST['video_other']!='')update_post_meta($video_id,'video_other',$_POST['video_other']);
if($_POST['video_special']!='')update_post_meta($video_id,'video_special',$_POST['video_special']);
if($_POST['video_recommend']!='')update_post_meta($video_id,'video_recommend',$_POST['video_recommend']);
if($_POST['video_special']=='')delete_post_meta($video_id,'video_special',$_POST['video_special']);
if($_POST['video_recommend']=='')delete_post_meta($video_id,'video_recommend',$_POST['video_recommend']);
}
}

که اون فیلدی که مورد نیاز دارم video_type هستش حالا برای نمایش کل قسمت ویدیو هم از کد زیر استفاده میکنم :

<?php
$args=array('post_type'=>'video','posts_per_page'=>get_option('posts_per_page'),'orderby'=>'modified','order'=>'DESC');
$loop=new WP_Query($args);
if($loop->have_posts()):
while($loop->have_posts()):$loop->the_post();
$video_artist=get_post_meta(get_the_ID(),'video_artist',true);
$video_name=get_post_meta(get_the_ID(),'video_name',true);
$video_cover=get_post_meta(get_the_ID(),'video_cover',true);
if($video_cover=='')$video_cover=get_bloginfo('template_url').'/images/not_available.jpg';
$video_special=get_post_meta(get_the_ID(),'video_special',true);
?>

حالا اگر میشه کد بالا رو برام تغییر بدید که فقط video_type های Persian رو نمایش بده ، کد بالا الان کل Post_type ویدیو رو نشون میده هم Persian هم Foreign در صورتی که میخوام وقتی روی Persian بود یه بخش نمایش بدم پست هاش رو وقتی هم روی Foreign بود یه بخش دیگه.

ممنون میشم مجدد منو راهنمایی کنید

لینک به ارسال

http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters


$args = array(
'meta_key' => 'video_type',
'meta_value' => 'Persian'
);
$query = new WP_Query( $args );

لینک به ارسال

خیلی ممنون از راهنماییتون ، آیا امکان این هستش که از چند meta_key داخل کوئری استفاده کرد ؟

بصورت تکی خیلی خوب نشون داد ، بنده الان میخوام وقتی meta_value در 2 پست تایپ جداگانه وقتی انتخاب بشه ، داخل یک صفحه اینهارو کنار هم نشون بدم.

یک صفحه جداگانه ساختم و از کد زیر استفاده کردم اما متاسفانه نشون نداد !

$args = array(
'meta_key' => array( 'video_type', 'song_type' ),
'meta_value' => 'Persian',
'post_type' => array( 'video', 'song' )
);

مجدد تشکر میکنم از کمکی که میکنید.

------------Update-----------

الان برای پست تایپ هایی که میخواستم یه فیلد اضافه درست کردم که meta_value هم نام باشه و مشکلم حل شد.

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

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

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

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

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

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

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

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

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

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

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