在add_meta_box()HTML输出中列出自定义帖子类型标题

时间:2014-08-10 15:27:13

标签: wordpress custom-post-type meta-boxes wp-query

我的主题包含两种自定义帖子类型,即传记和地点。在Places帖子类型中,我有一个包含HTML select元素的元框。在这个选择元素中,我想要一个所有传记类型标题的列表。

我以为我可以在add_meta_box()$ callback参数函数中执行WP_Query来填充列表,但这似乎不起作用。我该怎么做呢?

感谢。

1 个答案:

答案 0 :(得分:0)

这基于wptuts tutorial

将其用作case

case 'post_list':  
$post_types = $field['post_type'];
        $wp_cats = array();
    echo '<select name="'.$field['id'].'" id="'.$field['id'].'"> 
            <option value="">Chosse A Page</option>'; // Select One  
    foreach ( $post_types as $post_type ) {

        $pages = get_pages( array( 'post_type'=>$post_type, 'posts_per_page'=>-1, 'post_status'=>'publish', 'depth'=> 0 ) );

        $obj = get_post_type_object( $post_type );
        // output custom post type archive with link
        foreach ( $pages as $page ) {
       $wp_cats[$page->ID] = $page->post_title;
       // output posts with link
       if ( $post_type !== 'page' ){
           $title = $page->post_name;

           $url = home_url().'/'.$post_type.'/#'. str_replace('-', '', $title);
         echo '<option value="'.$url.'" ';
       if ($meta == $url) { echo 'selected="selected"'; }
       echo '>&nbsp;-&nbsp;'. $page->post_title .'</option>';  
       }else{
       echo '<option value="' . get_permalink($page->ID).'" ';
       if ($meta == get_permalink($page->ID)) { echo 'selected="selected"'; }
       echo '>&nbsp;-&nbsp;'. $page->post_title .'</option>';}

         }
       }              
    echo '</select><br /><span class="description">'.$field['desc'].'</span><br /><br /><strong style="color:#00bbe2; text-transform:uppercase;">Or</strong>';  
break;