我们继续将代码从静态模型移植到 WordPress 的 index.php 页面。我们稍微调整了一下“循环”,使其只输出我们想要的内容。
我们在页面上向下滚动到 WordPress 函数(如 get_sidebar()
)出现的地方。不出所料,它的行为与 get_header()
非常相似。它会获取 sidebar.php
文件并将内容放置到页面中该函数所在的位置。
我们删除了许多模拟从其他地方获取的标记的代码,并用最终输出相同标记的函数替换它们。例如,创建投票区域的大量标记消失了,我们添加了 wp_polls()
函数,该函数会输出在实际 WordPress 模板中显示投票所需的所有内容。
在过于兴奋地查看我们的工作之前,我们转到 footer.php 文件并清理它。这里最重要的任务是,我们需要关闭在 header.php 文件中打开但未关闭的任何元素。在我们的例子中,只有一个,需要关闭 <div class="page-wrap">
的开始标签。
我们在页脚中链接正确的脚本,删除了许多 v9 特定的内容,并整理了松散的结尾。
当我们查看页面时,发现有一些显示异常需要处理。我们在视频的最后花了很长时间调试这些问题,结果发现我们需要小心清除浮动和关闭标签的新位置。
Chris,
你使用什么调用来显示特定数量帖子后的项目或某个项目?
没有特定的“调用”。WordPress 中有一个叫做“循环”的东西。它实际上是一个 PHP
for
循环。我将一个名为$i
的变量设置为 1,并在循环的每次迭代中将其递增 1。然后,在循环期间,我还检查$i == 2
是否为真,如果是,则输出这些广告。没什么特别的,只是逻辑。好的,谢谢,我只是想知道《深入 WordPress》中是否有相关的代码片段。
嗨,Chris,
关于 WordPress 的单个样式包含(我在此视频中注意到),更普遍的做法是在 functions.php 中使用 wp_enqueue_style 进行每个页面的包含,它会将样式表插入你插入的
wp_head();
钩子中。那么一个例子是
我可以看到这样做会很好。
从本质上讲,你将逻辑从视图中分离出来,这实际上是我普遍坚持的一点。当我在开发 Rails 应用程序时,我非常讨厌逻辑渗透到视图中,但这就是我们这里在 header.php 文件中发生的事情。我想我只是对 WordPress 不那么敏感,因为我们可能永远无法摆脱例如在视图中使用循环,这又是另一种逻辑。
对于你的主页,需要考虑的另一件事是,从使用
query_posts
迁移到使用新的WP_Query
实例。目前的普遍观点是,你**永远不应该**使用query_posts
,因为它会运行额外的 SQL 查询,从而降低网站效率。我将留给其他人更好地解释原因。Andrew Nacin 的“你不知道 Query”幻灯片
何时使用 WP-Query、query_posts 和 pre_get_posts?