在此方案中组织数据的最佳方式

时间:2015-04-25 作者:drake035

我的问题不仅仅是关于代码,而是关于数据组织,我希望它在这里仍有一席之地。我的网站主菜单上有一个项目指向一个名为“视频”的页面。本页有两个主要部分:

最后一个“视频”(我创建的自定义贴子类型)贴子内容其他“视频”贴子的链接列表单击其中一个链接将导致类似的页面(相同的布局),但顶部的视频除外,这次是与链接相对应的页面。

问题是,这些页面应该是分开的还是相同的?例如,它可能是“视频”存档页面,其自定义模板显示在作为查询字符串传递的视频的顶部(如果没有参数,则显示最后一个视频)?或者,我应该一方面使用归档页面,另一方面使用单个CPT页面,在这种情况下,我会得到两个几乎相同的模板?最好的组织方式是什么?

1 个回复
最合适的回答,由SO网友:Jan Beck 整理而成

我赞成有两个单独的页面,因为这给了你永久链接的所有力量,可以直接访问特定的视频。这对您和您的访问者都有好处,因为内容可以更容易地共享。

从代码的角度来看,您可以应用DRY 原则,仍然使用单个视频。php和归档视频。php模板。看一看关于get_template_part 用于将模板拆分为子部分的函数。

例如,您将创建一个名为video-top.php 在页面顶部显示视频和另一个名为video-list.php 这只是其他视频链接列表的一部分。

然后在模板中single-video.php 您可以在顶部显示特定视频,包括模板部分,然后是其他视频的自定义循环,但不包括顶部视频:

<?php

// the top video
if ( have_posts() ) {
    while ( have_posts() ) {
        get_template_part( \'video\', \'top\' ); // includes video-top.php 
    } // end while
} // end if

// The list of other videos
$video_query = new WP_Query( array( \'post_type\' => \'video\', \'post__not_in\' => array( get_the_ID() ) ) );

if ( $video_query->have_posts() ) {
    echo \'<ul>\';
    while ( $video_query->have_posts() ) {
        $video_query->the_post();
        get_template_part( \'video\', \'list\' ); // includes video-top.php
    }
    echo \'</ul>\';
}
/* Restore original Post Data */
wp_reset_postdata(); ?>
这些文件的内容可能如下所示:

<li><a href="<?php echo get_permalink( get_the_ID() ) ?>"><?php the_title() ?></a></li>
并且在video-top.php:

 <h1><?php the_title() ?></h1>
 <?php the_content() ?>
在中archive-video.php 您的循环可能如下所示:

<?php

// the top video
if ( have_posts() ) {
    while ( have_posts() ) {
        if ( 0 == $current_post ) { // only runs for the first video
            get_template_part( \'video\', \'top\' ); // includes video-top.php
        } else {
            get_template_part( \'video\', \'list\' ); // includes video-list.php
        }
    } // end while
} // end if
$current\\u post是一个全局变量,在循环期间可用,并对每个post进行计数。

结束

相关推荐

Get_Pages()仅返回一项

我试图使用get\\u pages()列出特定父页面的子页面,以便在短代码中使用。不幸的是,只显示了一个页面,尽管还有很多页面需要显示。// List Vocations function get_vocations_list() { $args = array ( \'parent\' => \'753\', \'sort_column\' => \'menu_order\', \'so