2012-08-14 116 views
0

在WordPress中,我有一個自定義帖子類型的「視頻」。現在在編輯(常規)帖子頁面上,我希望有一個「精選視頻」字段,允許我從自定義帖子類型的「視頻」的所有視頻中選擇視頻。從帖子編輯頁面的自定義帖子類型中選擇

我從哪裏開始?注:請不要插件。

回答

2

簡單的方法

創建自定義字段(通過點擊編輯頁面的右上角的角落屏幕選項啓用自定義字段),並用的ID值稱之爲「featuredVideo」您要鏈接到的視頻。

然後在你的一個帖子模板調用像這樣:

<?php 
$fvID = get_post_meta(get_the_ID(), 'featuredVideo', true); 
?> 
<a href="<?php echo get_permalink($fvID); ?>">Check out the Featured Video!</a> 

最佳途徑

您可以Add A Meta Box到您的文章編輯器,一個簡單的下拉菜單,從類型視頻的所有帖子選擇。這需要在你的functions.php中有相當一部分代碼,並且你仍然需要將信息存儲爲元數據,但是它爲你提供了一個乾淨的界面來處理,而且你不再需要跟蹤ID來完成它工作。

的functions.php -

add_action('add_meta_boxes', 'add_featured_video_meta'); 
add_action('save_post', 'save_featured_data'); 

function add_featured_video_meta() 
{ 
    add_meta_box( 
     'featured_video_meta', 
     'Add Featured Video', 
     'featured_video_inner', 
     'post', 
     'side' 
    ); 
} 

function featured_video_inner($post) 
{ 
    wp_nonce_field(basename(__FILE__), 'featured_video_nonce'); 
    $q = new WP_Query(array('post_type'=>'video', 'posts_per_page'=>-1)); 
?> 
    <label for="featuredVideo">Select a Video: </label> 
    <select name="featuredVideo"> 
    <option value="0">Select a Video</option> 
<?php 
    if($q->have_posts()) : while($q->have_posts()) : $q->the_post(); 
     $selected = get_post_meta($post->ID, 'featuredVideo', true) === get_the_ID() ? ' selected="selected"' : ''; 
     echo '<option value="'.get_the_ID().'"'.$selected.'>'.get_the_title().'</option>'; 
    endwhile;endif; 
?> 
    </select> 
<?php 
} 

function save_featured_data($post_id) 
{ 
    if(defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
     return; 
    if(!wp_verify_nonce($_POST['featured_video_nonce'], basename(__FILE__))) 
     return; 
    if(!current_user_can('edit_post', $post_id)) 
     return; 

    update_post_meta($post_id, 'featuredVideo', $_POST['featuredVideo']); 
} 

上面的例子是未經檢驗的,所以我不能保證它會工作直接出了大門,但最困難的部分基本上爲你做了,如果是這樣的你想採取的方法。一旦你得到你的定製Meta Box的工作,你可以在第一個示例中使用完全一樣的方式引用單個發佈模板中的發佈元數據。

只要玩它,看看什麼最適合你。

+0

如果我添加腳本並轉到編輯頁面,那麼選擇框在那裏,但內容是錯誤的。它添加了大約120 000次的以下行:''。 – Ben 2012-08-19 12:50:47

+0

這個問題可以通過改變'$ q-> the_post;'到'$ q-> the_post();'現在接下來就是如果我選擇一個視頻,保存這個帖子,那麼這個視頻就不會被選中了在下拉菜單中? – Ben 2012-08-19 13:23:45

+0

現在可以通過將'get_post_meta($ post-> ID,'featuredVideo')''改成'get_post_meta($ post-> ID,'featuredVideo',true)'來解決這個問題。 – Ben 2012-08-19 13:37:00

相關問題