【问题标题】:Creating a Single Page WordPress Theme correctly正确创建单页 WordPress 主题
【发布时间】:2020-02-07 07:35:13
【问题描述】:

我昨天在 WordPress Exchange 上问过这个问题,但没有引起注意,所以我现在在这里发帖。


我创建了一个单页 WordPress 主题来学习创建主题的过程,一切都很好,但它是以一种非常 hack-ish 的方式完成的,如果我想分发这个,我会有人想知道它到底是怎么工作的。

简而言之,您可以像创建任何其他主题一样创建页面,然后将它们添加到主菜单中。然后我的代码读取菜单内容并按照页面在菜单上的顺序加载页面内容。 (见下面的代码)

显然这不是应该的做法。我想知道的是我应该怎么做?我还没有找到一个很好的单页主题指南以及它们应该如何工作。任何帮助将不胜感激。

现在我的整个 index.php 文件:

<?php
/**
 * @author Spedwards
 * Date: 2020-01-20
 */
get_header();

$menu_slug = 'header-menu';
$locations = get_nav_menu_locations();
if (isset($locations[$menu_slug])) {
    $menu = get_term($locations[$menu_slug]);
    $menu_items = wp_get_nav_menu_items($menu->term_id);
    if ($menu_items) {
        foreach ($menu_items as $item) {
            $page = get_page_by_title($item->title);
            ?>
            <section class="section-page" id="<?= $page->post_title ?>">
                <div class="container">
                    <h2 class="page-section-heading text-center text-uppercase mb-0"><?= $page->post_title ?></h2>
                    <div class="divider">
                        <div class="divider-line"></div>
                        <div class="divider-icon">
                            <div class="fas fa-crown"></div>
                        </div>
                        <div class="divider-line"></div>
                    </div>
                    <?= $page->post_content ?>
                </div>
            </section>
            <?php
        }
    }
}

get_footer();

Live example

【问题讨论】:

  • Wordpress 最初是一个博客平台,它的默认模板具有简单但有限的功能。但是你可以用它做任何你想做的事情,我看不出你的方法有什么问题,除了你用你的方法创建了多个重复的内容,因为所有的帖子和页面都有自己的实际前端页面。但是您应该可以通过重定向或将其设置为私有来隐藏这些原始页面
  • @silver 这就是问题所在。这种方法不存在单个页面。如果我创建一个新页面并转到它,它只会显示索引页面。不过,这可能与此无关。
  • 它是因为你没有page.php模板,不同的页面会有不同的模板,它们会默认加载,归档页面会寻找archive.php,页面会寻找page.php,如果这些都不存在,帖子将查找 single.php,它将回退到索引。 php,结帐模板层次结构developer.wordpress.org/themes/basics/template-hierarchy

标签: php wordpress wordpress-theming


【解决方案1】:

WordPress 的问题在于它们的主要目标是支持与旧资产的兼容性。这意味着我们必须努力研究超过 10 年的技术。 WordPress 从未实现过任何软件设计模式,甚至没有发布任何“最佳实践”指南。

官方学习资料是https://developer.wordpress.org/themes/getting-started/提供的主题开发手册,2007年左右首次发布,至今没有太大变化。

使用 WordPress 将永远不会与使用 PHP 框架后的习惯相似。遗憾的是,您需要根据上述指南开发自己的结构,并使其尽可能透明。

不过,有一个提示,尝试坚持一些编码风格,例如PSR-12。它将帮助您以可读的方式管理甚至复杂的代码。 https://www.php-fig.org/psr/psr-12/

【讨论】:

    猜你喜欢
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    相关资源
    最近更新 更多