我正在创建一个自定义的Wordpress主题,据我所知,Wordpress应该独立完成按类别、作者等筛选帖子类型的繁重工作。这只是我的index.php
专门针对类别类型。
另一个问题。。。我需要一个archive.php
? 我以为Wordpress应该做所有繁重的工作,比如按类别、标签、作者等进行过滤index.php
效果很好,但当我尝试转到特定类别时,它显示了我的所有帖子,而不仅仅是选定的类别,所以我尝试实现archive.php
编辑1:我应该提到我没有使用主循环,因为我使用的是自定义帖子类型
archive.php
<?php
/**
* @author Mark Abel
* @package client-name/archive
* @version 1.0
*/
if ( ! defined( \'ABSPATH\' ) ) exit; // Exit if accessed directly
get_header(); ?>
<?php get_template_part( \'partials/partial\', \'sidenav\' );?>
<section class="masonry__container" id="masonry__container">
<div class="masonry" id="masonry">
<?php
$category = get_category( get_query_var( \'cat\' ) );
$cat_id = $category->cat_ID;
$loop = new WP_Query( array( \'post_type\' => \'project\', \'cat\' => $cat_id ) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php $project_for = get_post_meta($post->ID, "project_for", true); ?>
<article class="masonry__tile" data-aos="zoom-in">
<img src=<?php the_post_thumbnail_url(); ?> alt="an image" />
<div class="masonry__overlay"><div class="masonry__title">
<?php echo get_the_title() ?>
</div>
<div class="masonry__project">
<?php echo $project_for ?>
</div>
<span></span>
<div class="masonry__cta"><a href="<?php echo get_post_permalink(); ?>">Click to view</a></div>
<a class="masonry__video" href="https://player.vimeo.com/video/124254859">Play video</a>
</div>
</article>
<?php endwhile;
endif;
wp_reset_postdata();
?>
</div>
</section>
</body>
<!-- Footer -->
<?php get_footer(); ?>
</html>
partial imported by index.php
<?php
/**
* @author Mark Abel
* @package client-name/partials/partial-masonry
* @version 1.0
*/
if ( ! defined( \'ABSPATH\' ) ) exit; // Exit if accessed directly
?>
<section class="masonry__container" id="masonry__container">
<div class="masonry" id="masonry">
<?php
$loop = new WP_Query( array( \'post_type\' => \'project\' ) );
if ( $loop->have_posts() ) :
while ( $loop->have_posts() ) : $loop->the_post(); ?>
<?php $project_for = get_post_meta($post->ID, "project_for", true); ?>
<article class="masonry__tile" data-aos="zoom-in">
<img src=<?php the_post_thumbnail_url(); ?> alt="an image" />
<div class="masonry__overlay"><div class="masonry__title">
<?php echo get_the_title() ?>
</div>
<div class="masonry__project">
<?php echo $project_for ?>
</div>
<span></span>
<div class="masonry__cta"><a href="<?php echo get_post_permalink(); ?>">Click to view</a></div>
<a class="masonry__video" href="https://player.vimeo.com/video/124254859">Play video</a>
</div>
</article>
<?php endwhile;
endif;
wp_reset_postdata();
?>
</div>
</section>
SO网友:Jacob Peattie
我以为Wordpress应该做所有繁重的工作,比如按类别、标签、作者等进行过滤。
确实如此。这就是为什么你不应该这样做:
$category = get_category( get_query_var( \'cat\' ) );
$cat_id = $category->cat_ID;
$loop = new WP_Query( array( \'cat\' => $cat_id ) );
在主模板文件中,您不应该进行自己的查询。使用主回路:
<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>
<!-- etc. -->
<?php endwhile; ?>
<?Php endif; ?>
存档的目的。php允许您为归档使用不同的模板。不手动查询不同的帖子。唯一的区别应该是内容周围的HTML标记。