CMS的循环制导

时间:2014-06-25 作者:markmilly

也许我走错了方向,但这是我的设想。。。我想把WordPress用作CMS而不是博客平台。我有一个网站,将有25-50页之间的地方,不会有任何帖子。

我希望开发自己的主题,这应该相当容易,但是我对使用循环函数有点困惑。

我理解:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
用于拉取x个帖子的页面,但是在我的场景中,我只想拉取页面的内容,而不是x个帖子。是否需要创建自定义SQL查询?

我经常遇到的所有例子都是使用帖子循环。如果我只是使用静态页面,我甚至需要使用循环吗?我可以只使用唯一的URL从MySQL数据库的post列中拉出一个页面吗?

我希望这是有意义的。

2 个回复
SO网友:Gioia Fueter

严格地说,您不需要在页面模板中使用循环,但这并不有害,页面的内容仍会加载,循环只会运行一次,因为只有一篇文章/页面。许多主题在页面模板中都包含一个循环,我想这是出于一些兼容性问题。

如果您是从头开始构建页面模板,则无需向其添加循环,您是对的,wordpress将从URL获得正确的内容,但您仍然需要在使用模板标记(如\\u title()、\\u content()等)之前运行函数the\\u post()。只需将the\\u post()放在模板顶部即可。

希望这对你有意义,如果你需要进一步的澄清,请不要犹豫。

SO网友:Pieter Goosen

INFORMATIONAL CONTENT

Pages, 喜欢posts, 在数据库中存储为post_types, 这里最大的区别是页面不在正常的基于时间的列表中。看看法典上怎么说

What Pages Are:

<页面用于比帖子更不依赖时间的内容

What Pages are Not:

<页面不是帖子,也不是从大型小说中摘录出来的。它们不会循环浏览您博客的主页。WordPress插件可以在必要时更改默认值页面主要用于非博客目的,可以完美满足您的需求。您可以看看如何创建page templates 在法典中。

REAL QUESTION

要回答您的问题,输入页面的所有信息都存储在数据库中,就像帖子一样,但不同于存储为post_type post, 页面存储为post_type page. 要获取并显示这些信息,必须查询数据库以调用该信息。

以下是主查询如何确定加载页面时要返回的信息Query Overview

因此,WordPress使用以下步骤来决定在页面上显示哪些帖子或页面,并显示它们:

当访问者第一次单击或键入作为博客一部分的页面的URL时,WordPress首先运行几个核心文件(wp-config.php、wp-settings.php等)。如果您对文件加载顺序的细节感兴趣,请从索引开始。php并遵循文件链,因为每个php文件都包含/需要额外的php文件(或阅读humanshell.net上的这篇优秀文章)

  • WordPress加载并初始化您激活的任何插件(称为插件初始化操作)main()($wp是wp类的对象,在wp includes/class wp.php中定义)。这告诉WordPress:-使用WP->Parse\\u request()将URL解析为查询规范--下面将介绍更多内容
  • 使用$wp\\u query->parse\\u query()设置条件标记使用的所有is\\u变量($wp\\u query是wp\\u query类的对象,在wp includes/query.php中定义)。请注意,尽管此函数的名称不同,但在本例中,WP\\u Query->parse\\u Query实际上并不为我们进行任何解析,因为这是由WP->parse\\u request()事先完成的
  • 将查询规范转换为MySQL数据库查询,并在函数WP\\u query->get\\u posts()中运行数据库查询以获取帖子列表。将帖子保存在要在WordPress循环中使用的$wp\\u查询对象中

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    
    用于拉取x个帖子的页面,但是在我的场景中,我只想拉取一个页面的内容,而不是x个帖子

    因此,这个问题的答案是,循环只输出来自主查询的信息/数据。主查询从数据库中检索数据,如前所述,主查询仅根据URL和帖子类型检索信息

    是否需要创建自定义SQL查询?

    不,主查询已经完成了。你可以使用the_post() 从主查询()获取该信息。如果需要进行自定义查询,请使用WP_Query. 永远不要使用自己的SQL查询

    如果我只是使用静态页面,我甚至需要使用循环吗?

    没有必要,您只需使用the_post() 显示您的信息。然而,使用循环是一种很好的做法,因为have_posts() 当循环到达终点时触发循环终点。

    我希望这能解释你可能遇到的问题。如果我可以把这个留给你,千万不要试图重新发明轮子,但这并不意味着如果有一天到来,你就不能改进设计。但目前,请坚持基本原则,并几乎总是使用默认循环。

    结束

    相关推荐

    如何在WordPress的post-new.php中添加自定义命令

    我是新来的。我有一个php代码,可以创建html文件并将其上载到文件夹中。如何在post new中添加自定义php代码。php所以当发布帖子时。。。此外,我需要得到后未来的图像路径,后url和后标题。谢谢大家!我的代码是:$my_file = \'myindex.html\'; $handle = fopen($my_file, \'w\') or die(\'Cannot open file: \'.$my_file); //implicitly creates file $