基于页面分组的主题定制

时间:2019-02-20 作者:Sebus

我有一个20页的页面(目前还没有Wordpress),分为5组,每个组在页面的标题中都有自己的组图像(内容之外)。类别中的每个页面都有相同的图像。

现在我尝试在wordpress中实现这种行为。

我是否可以对我的页面进行分类,并为我自己编写的主题添加一些条件?

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

您可以:

A: 使用帖子而不是页面。默认情况下,WP在帖子上启用类别,因此很容易为每个帖子选择一个类别(所有类别都用复选框显示,或者很容易添加新类别)。

B: 使用页面,并创建一个自定义的“页面类别”分类法对其进行分类,这样也可以方便地为每个页面选择一个页面类别(您开始键入一个类别,它会自动完成,或者很容易添加一个新类别)。

无论哪种方式,为每个类别添加图像的最简单方法是使用高级自定义字段。它将允许您使用内置媒体库上载或选择图像,而无需编写大量JavaScript或手动粘贴图像URL。

您需要确保为每个帖子/页面分配一个且只有一个类别。除非你加入了很多额外的逻辑,否则WP无法判断他们上次查看的是哪个类别,因此,如果你将一篇文章同时分配给a类和B类,并且访问者一直在阅读B类文章,然后又出现在这篇文章上,那么他们将看到a类标题,而他们不一定会看到这样的标题。但是,当有多个类别时,下面的代码不会“失败”,它只会获取它首先找到的任何类别的图像。

最后,在主题标题中,您将检查显示的内容类型,以确定要显示的图像。类似于此(此版本用于选项A):

<?php
// If this is a single Post
if(is_single(\'post\')) {
    // get its Category
    $category = get_the_category();
    // set required ACF $post_id to category_#
    $post_id = \'category_\' . $category->term_id;
    // get the first Category\'s ACF image
    $header_image = get_field(\'header_image\', $post_id);
}
// If this is one of the Categories
elseif(is_category) {
    // set required ACF $post_id to category_#
    $post_id = \'category_\' . get_queried_object()->term_id;
    // get the first Category\'s ACF image
    $header_image = get_field(\'header_image\', $post_id);
}
// Now that we have the image ID, we\'ll use it somehow
// You could output the actual image, or use it as a background like this
?><style>
    header { background-image:url(\'<?php echo $header_image; ?>\'); }
</style>
您可能需要根据标记进行调整(可能您不希望图像成为标题上的背景图像,或者您在标题上有一个类,以便其他标题标记不受影响),但这是基本逻辑。

相关推荐