发布页面显示子页面而不更改 URL
Posted
技术标签:
【中文标题】发布页面显示子页面而不更改 URL【英文标题】:Post page displaying sub page without URL change 【发布时间】:2021-09-23 15:12:05 【问题描述】:我正在为一家公司开发一个关于 WordPress 的网站,我遇到了以下问题。这是结构:
部分:
fruits
类别(子部分):
red, yellow, blue, orange
项目(子小节):
apples, oranges, lemons, blueberries
Fruits
基于站点的Posts
部分(旁边有一个小图钉)。 The category plays into the URL for that page, so when an item is selected it would look something like:
food.com/fruits/red/apples/
类别页面有它自己的页面,带有一些视觉导航和关于该类别的简介。选择果实并导航到其中一个类别时,页面显示水果的内容而不是构建自身的类别页面。
例如,网址如下所示:
food.com/fruits/red/
但它正在显示页面
food.com/fruits/red/apples/
不更改 URL。
到目前为止,我解决此问题的唯一方法是不选择类别,但是随后我遇到了该水果页面的 URL 如下所示的问题:
food.com/fruits/colour/apples/
到目前为止,我还没有找到有关此主题的任何信息,我们将不胜感激。
在下图中,您可以看到下一步显示错误的页面,但是在两种情况下,第二页的永久链接是相同的。
visual of this problem
编辑:
archive-fruits.blade.php
@include('page')
page.blade.php
@php $iterator = 0 @endphp
@extends('layouts.app')
@section('content')
@while(have_posts()) @php the_post() @endphp
@if ($flexible_content)
@foreach ($flexible_content as $block)
@if ($block->block_type == 'markets_slider')
@include('partials.markets-slider')
@elseif ($block->block_type == 'static_content')
@include('partials.static-content')
@elseif ($block->block_type == 'expandable_content')
@include('partials.expandable-content')
@elseif ($block->block_type == 'image_+_text_listings')
@include('partials.image-plus-text-listings')
@elseif ($block->block_type == 'farmers_markets_list')
@include('partials.farmers-markets-list')
@elseif ($block->block_type == 'fruits_list')
@include('partials.fruits-list')
@elseif ($block->block_type == 'tabbed_content')
@include('partials.tabbed-content')
@endif
@endforeach
@endif
@endwhile
@endsection
布局:app.blade.php
<!doctype html>
<html !! get_language_attributes() !!>
@include('partials.head')
<body @php body_class() @endphp>
@php do_action('get_header') @endphp
@include('partials.header')
<div class="wrap container" role="document">
<div class="content">
<main class="main">
@yield('content')
</main>
@if (App\display_sidebar())
<aside class="sidebar">
@include('partials.sidebar')
</aside>
@endif
</div>
</div>
@php do_action('get_footer') @endphp
@include('partials.footer')
@php wp_footer() @endphp
</body>
</html>
【问题讨论】:
【参考方案1】:我不知道您是如何创建 CPT 的,但它使用默认页面模板作为存档模板。这意味着您不会在类别存档中拥有帖子列表,而只有内容。 您必须在 archive-fruits.blade.php 中创建一个存档模板,替换已经存在的那一行。
您可以查看任何 Wordpress 主题的 archive.php 文件中的存档模板是如何制作的,但这是自定义帖子类型,因此可能存在差异(例如事实名为 archive-fruits)。没有什么是 quick search on Google 无法解决的。我建议您先阅读the Codex,然后阅读一些指南。
【讨论】:
【参考方案2】:我真的不明白你的工作方式。抱歉,我无法发表评论,但我还没有足够的声誉。这个“水果”是自定义帖子类型还是“帖子”功能本身? “不改变网址”是什么意思?
您可以在WordPress的设置中更改帖子的永久链接,跟随Settings>Permalink
,并在URL中添加类别,如您所见here。
【讨论】:
对不起,我知道这很混乱! Fruit 是一种自定义后置类型。我将添加一张图片,希望对解释有所帮助。 我看到了照片。据我所知,您希望第一个按钮(红色),即自定义帖子类型的类别,打开该类别的存档。你说实际发生的是第一个按钮(红色)直接打开它包含的帖子。或者它可能会打开直接填充类别内容的类别存档。也许第一个按钮根本不代表类别存档...我们需要更多详细信息,例如您如何创建自定义帖子类型以及您的代码是什么。 好的,我再次阅读了主题并看到了照片。现在一切都清楚了。类别存档页面似乎以某种奇怪的方式工作。我们需要此类存档模板的代码:也许它旨在直接显示帖子的内容而不是它们的列表。此类模板应在文件夹中的某处命名为 archive-fruits.php,但如果您创建了 CPT,则可能是 Wordpress 正在使用主题的 default archive 作为后备。 好的,谢谢!我不知道如何解释这个问题,但就是这样——我的档案页面由于某种原因没有正确显示。存档页面本身只显示@include('page')
,而在page
中有很多if (some_layout_type) include (some_partial)
。剩下的就是一个兔子洞,在这里发布的信息太多了,但非常感谢你,这为我指明了正确的方向。
让我们至少开始添加存档页面和“页面”页面的代码。可能是您需要创建一个新的存档页面或从 Wordpress 的默认文件中复制它。编辑您的问题。我仍然不明白您所指的存档页面是默认的 archive.php 还是像 archive-fruites.php 这样的自定义存档页面。以上是关于发布页面显示子页面而不更改 URL的主要内容,如果未能解决你的问题,请参考以下文章