Перейти к содержимому


Выбрать шаблон и создать сайт

Вывод списка custom post types

#1 Вячеслав

Вячеслав
  • Пользователь
  • 357 сообщений
  • Репутация: 0
0

Отправлено 03 Февраль 2016 - 01:07

Здравствуйте, создал я плагин для добавления кастомных типов записей, с имя типа прописал video, 
теперь все ссылки на посты этого типа имеют вид site.com/video/bla_bla_bla
Шаблон страницы видео single-video.php (все ок), но если открыть site.com/video/ то никакой шаблон не подключается!

Даже создав страницу в панели с алиасом /video/ и выбрав шаблон single-video.php ничего не выводится... т.е он не подключается!

Не могу вобщем список постов video вывести по адресу site.com/video/ 

 

В чем моя ошибка? 

 

 

Спасибо!

<?php
/*
Plugin Name: Video
Plugin URI: http://podvoh.tv/
Description: Declares a plugin that will create a custom post type displaying video reviews.
Version: 1.0
Author: Vyacheslav Dokukin (toorr2p@bigmir.net)
Author URI: http://cleverscript.ru
License: GPLv2
*/

add_action( 'init', 'create_video' );

function create_video() {
    register_post_type( 'video',
        array(
            'labels' => array(
                'name' => 'Video',
                'singular_name' => 'Video',
                'add_new' => 'Add New',
                'add_new_item' => 'Add New Video',
                'edit' => 'Edit',
                'edit_item' => 'Edit Video',
                'new_item' => 'New Video',
                'view' => 'View',
                'view_item' => 'View Video',
                'search_items' => 'Search Video',
                'not_found' => 'No Video found',
                'not_found_in_trash' => 'No Video found in Trash',
                'parent' => 'Parent Video'
            ),
            'public' => true,
            'menu_position' => 15,
            'supports' => array( 'title', 'editor', 'comments', 'thumbnail', /*'custom-fields'*/ ),
            'taxonomies' => array( '' ),
            'menu_icon' => plugins_url( 'images/image.png', __FILE__ ),
            'has_archive' => true
        )
    );
}

add_action( 'admin_init', 'my_admin' );

function my_admin() {
    add_meta_box( 'video_video_meta_box',
        'Video Details',
        'display_video_meta_box',
        'video', 'normal', 'high'
    );
}

function display_video_meta_box( $video ) {
    // Retrieve current name of the Director and video Rating based on review ID
    $video_url = esc_html( get_post_meta( $video->ID, 'video_url', true ) );
    $video_author = esc_html( get_post_meta( $video->ID, 'video_author', true ) );
    $video_author_login = esc_html( get_post_meta( $video->ID, 'video_author_login', true ) );
    $video_rating = intval( get_post_meta( $video->ID, 'video_rating', true ) );
    $video_likes = intval( get_post_meta( $video->ID, 'video_likes', true ) );
    ?>
    <table>
        <tr>
            <td style="width: 100%">Video Url</td>
            <td><input type="text" size="80"
            name="video_url"
            value="<?php echo $video_url; ?>" /></td>
        </tr>
        <tr>
            <td style="width: 100%">Video Author</td>
            <td><input type="text" size="80"
            name="video_author_name"
            value="<?php echo $video_author; ?>" /></td>
        </tr>
        <tr>
            <td style="width: 100%">Video Author Login</td>
            <td><input type="text" size="80"
            name="video_author_login"
            value="<?php echo $video_author_login; ?>" /></td>
        </tr>
        <tr>
            <td style="width: 100%">Video Likes</td>
            <td><input type="text" size="80"
            name="video_likes"
            value="<?php echo $video_likes; ?>" /></td>
        </tr>
        <? /*
        <tr>
            <td style="width: 150px">Video Rating</td>
            <td>
            <select style="width: 100px"
            name="video_rating">
            <?php
            // Generate all items of drop-down list
            for ( $rating = 5; $rating >= 1; $rating -- ) {
            ?>
            <option value="<?php echo $rating; ?>"
            <?php echo selected( $rating,
            $video_rating ); ?>>
            <?php echo $rating; ?> stars
            <?php } ?>
            </select>
            </td>
        </tr>
        */ ?>
    </table>
<?php }



add_action( 'save_post',
'add_video_fields', 10, 2 );


function add_video_fields( $video_id, $video ) {
    // Check post type for video reviews
    if ( $video->post_type == 'video' ) {
        // Store data in post meta table if present in post data
        if ( isset( $_POST['video_url'] ) && $_POST['video_url'] != '' ) {
            update_post_meta( $video_id, 'video_url', $_POST['video_url'] );
        }
        if ( isset( $_POST['video_author_name'] ) && $_POST['video_author_name'] != '' ) {
            update_post_meta( $video_id, 'video_author', $_POST['video_author_name'] );
        }
        if ( isset( $_POST['video_author_login'] ) && $_POST['video_author_login'] != '' ) {
            update_post_meta( $video_id, 'video_author_login', $_POST['video_author_login'] );
        }
        if ( isset( $_POST['video_likes'] ) && $_POST['video_likes'] != '' ) {
            update_post_meta( $video_id, 'video_likes', $_POST['video_likes'] );
        }
        /*if ( isset( $_POST['video_rating'] ) && $_POST['video_rating'] != '' ) {
            update_post_meta( $video_id, 'video_rating', $_POST['video_rating'] );
        }*/
    }
}


add_filter( 'template_include', 'include_template_function', 1 );


function include_template_function( $template_path ) {
    if ( get_post_type() == 'video' ) {
        if ( is_single() ) {
            // checks if the file exists in the theme first,
            // otherwise serve the file from the plugin
            if ( $theme_file = locate_template( array( 'single-video.php' ) ) ) {
                $template_path = $theme_file;
            } else {
                $template_path = plugin_dir_path( __FILE__ ) .'/single-video.php';
            }
        }
    }else{
        
        if ( $theme_file = locate_template( array( 'single-videos.php' ) ) ) {
            $template_path = $theme_file;
        } else {
            $template_path = plugin_dir_path( __FILE__ ) .'/single-videos.php';
        }
        
    }
    return $template_path;
}


?>

 

 

Сообщение отредактировал Вячеслав: 03 Февраль 2016 - 01:08

  • 0


Оформление форума – IPBSkins.ru