• 日常搜索
  • 百度一下
  • Google
  • 在线工具
  • 搜转载

页面存储在哪里?WordPress 数据库工作原理

页面和帖子存储在 wordpress数据库中。这是您的 WordPress 网站工作方式的重要组成部分。没有它,您的任何页面或帖子都不会被保存,并且在有人访问它们时也不会显示。

在这篇文章中,我将向您展示 WordPress 中的数据库是如何工作的,以及当访问者访问您的网站时 WordPress如何从数据库中构建页面。

WordPress 的工作原理:数据库和文件

WordPress 是一个内容管理系统(或 CMS)。这意味着它不是为站点中的每个页面创建静态html文件,而是使用数据库来存储这些页面的所有内容,然后在每次加载页面时使用代码访问该内容。

除了数据库,WordPress 还包含另外两个元素:

  • 运行 WordPress 本身的核心文件,您在设置站点时安装这些文件。

  • 您上传到网站的任何文件,包括主题和插件文件以及媒体附件。

WordPress 使用所有这些来构建您网站中的页面,而无需您编写任何代码。

让我们更多地看看您的页面和帖子的存储位置以及数据库的结构。

帖子和页面的存储位置

您网站中的所有内容都存储在数据库中。这包括:

  • 您的页面、帖子和任何自定义帖子类型的帖子(例如,如果您经营商店,则为产品)。

  • 有关附件的数据。

  • 任何元数据,例如帖子类别和标签(以及自定义分类法,如果您的站点中有它们),以及自定义字段和插件添加的任何元数据。

  • 有关您已上传到站点的附件的信息,包括文件名称、alt文本和描述等元数据,以及可能附加到哪些页面或帖子的信息。

  • 您的设置,包括网站标题和描述等整体网站设置,以及插件和主题的更具体设置。

  • 用户数据和设置。

WordPress 数据库中有 12 个表,您可以在 WordPress Codex 的这张图片中看到这些表。

页面存储在哪里?WordPress 数据库工作原理  第1张大多数表是相互链接的,其中wp_posts是最重要的一个:

  • wp_posts是存储帖子和页面内容的位置。有关附件的信息以及导航菜单和修订版也存储在此表中。

  • wp_postmeta(链接到wp_posts)存储有关帖子和页面的元数据。

  • wp_comments(链接到wp_users)存储您帖子上的所有评论,包括发布者和添加时间。

  • wp_commentmeta(链接到wp_comments)存储有关评论的元数据。

  • wp_terms(链接到wp_term_taxonomy)将所有分类术语存储在您的站点中,包括您的类别和标签。

  • wp_term_taxonomy(链接到wp_terms和wp_term_relationships)将每个术语的分类存储在wp_terms表中。

  • wp_term_relationships(链接到wp_terms_taxonomy和wp_posts)将您的帖子链接到已分配给它们的分类术语。

  • wp_termmeta(链接到wp_terms)将元数据存储在您的分类术语中。

  • wp_users(链接到wp_posts和wp_comments)存储您网站上所有用户的列表以及他们的用户名、密码和其他数据。

  • wp_usermeta(链接到wp_users)存储用户的元数据。

表之间的关系链接所有数据,并确保对于给定的帖子,WordPress 知道它有哪些分类术语、谁编写了它、它有什么评论等等。

两个表未链接到其他表,并且与您的帖子没有关系:

  • wp_options存储整个站点的全局选项和设置(不是存储在wp_postmeta中的帖子)。

  • wp_links是早期博客的遗留物,它存储 blogroll 的内容,一个链接列表。这些天很少使用它。

因此,您的帖子和页面存储在wp_posts中,但有关它们的元数据存储在链接到它们的其他表中。

但是 WordPress 如何将所有这些数据转换为您网站上的页面?

WordPress 如何为您的页面获取内容

WordPress 使用一段名为The Loop的特定代码来获取数据库内容并将其输出到您网站的页面中。这适用于单页、存档页、主页和搜索结果。

观看这个简短的视频,以获得对循环的完整介绍。 

页面存储在哪里?WordPress 数据库工作原理  第2张

循环从此代码开始:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

这将检查if此页面上是否有任何帖子要输出,并且while有,它使用the_post()模板标签以便可以输出帖子的内容。

请注意,这里的“post”并不意味着博客文章。在这种情况下,帖子可以表示任何内容类型,包括帖子、页面、附件或自定义帖子类型的帖子。它可能会让人感到困惑!

它以这段代码结束:

<?php endwhile; endif; ?>

这从一开始就结束了while循环,这意味着当 WordPress 在站点中找到该页面所需的所有内容时,它将停止循环遍历帖子。然后它关闭检查并停止检查是否有任何帖子。if

这两行之间是输出内容的代码。我将很快向您展示针对不同内容类型的不同版本。

WordPress 根据正在访问的页面类型知道哪些内容与当前页面相关。因此,对于存档页面,它将知道它是哪种存档页面(例如,类别存档),对于单个帖子或页面,它将知道正在输出哪个帖子或页面。它将使用主题中的正确模板文件(使用主题层次结构)来输出当前内容类型的相关循环。

让我们来看看这个实际操作。

单个帖子和页面

单个帖子和页面的循环只会运行一次,因为只需要显示一个帖子或页面的内容。WordPress 知道这一点,因为它知道它在您的站点中显示的页面类型,并且只会获取当前的帖子或页面。

单个帖子的循环将如下所示:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
		<h1 class="entry-title"><?php the_title(); ?></h1>
		
		<section class="entry-meta">
			<?php the_date(); ?>
		</section><!-- .entry-meta -->
		
		<section class="entry-content">
			<?php the_content(); ?>
		</section><!-- .entry-content -->

	</article><!-- #post-## -->

<?php endwhile; endif; // end of the loop. ?>

这是循环的简化版本。在大多数主题中,它还将包含更多元数据、类别列表和评论。但它向您展示了帖子或页面的核心内容是如何输出的。

一切都包含在一个article元素中,该元素具有使用模板标签ID设置的帖子 ID 和类。post_class()然后有一个h1带有帖子标题的元素和一个使用the_content()模板标签的内容部分。

所有这些都是通过访问数据库自动完成的,这意味着您的所有单个帖子只有一个文件——模板文件。

页面的循环看起来非常相似,并且不太可能包含元数据和评论,但这会根据您的主题而有所不同。

存档页面

存档页面也使用循环,但不是只输出一篇文章,而是获取多篇文章并全部显示。因此,例如,类别存档将输出该类别中的所有帖子。

同样,WordPress 知道根据正在显示的页面来执行此操作。这是while()循环部分更明显的地方,因为当有帖子要显示时,WordPress 会一次又一次地循环。

这是类别存档的示例循环:

<?php if( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
    <h3 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'compass' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h3>
	
	<?php if ( has_post_thumbnail() ) { ?>		
		<a href="<?php the_permalink(); ?>">
			<?php the_post_thumbnail( 'medium', array(
				'class' => 'left',
				'alt'	=> get_the_title()
				) );
			?>
		</a>
	<?php } ?>

	<section class="entry-meta">
		<?php the_date(); ?>
	</section><!-- .entry-meta -->

	<section class="entry-summary">
		<?php the_excerpt(); ?>
	</section><!-- .entry-content -->
</article>

<?php endwhile; endif; ?>

与单个帖子或页面相比,这里有一些关键区别:

  • 标题在h3标签内,而不是h2. 这是因为存档页面的标题将在h2标签中。

  • 标题位于帖子的链接中,使用the_permalink(). 这意味着访问者可以从存档页面点击进入单个帖子。

  • 特色图像作为存档页面设计的一部分输出。这是可选的,但会鼓励更多点击进入帖子。它也包含在帖子的链接中。

  • 输出的是帖子的摘录,而不是全部内容。在某些博客中,整个内容都输出在存档页面上,但如果您只使用摘录,则意味着人们无需滚动即可查看该存档中的所有帖子。

存在差异,但正如您所看到的,档案使用循环就像单个页面和帖子一样 - 他们使用它来访问数据库,获取保存在wp_posts表中的内容,然后输出。

主页

主页的显示方式取决于您的设置方式。您的主页可以是您最近发布的列表或静态页面。您可以在 WordPress 管理员的设置菜单中进行配置。

如果您的主页是静态页面,那么它通常会使用与站点中其他静态页面相同的模板文件和相同版本的循环。除非您的主题有主页的特定模板文件。有时像这样的模板文件将用于获取页面的内容并输出额外的内容,例如仅在主页上的滑块。无论哪种方式,循环都会像我们在上面看到的单页循环一样。

如果您的主页是您最新帖子的存档,它不会使用archive.php模板文件(很烦人),而是使用专门用于主页的模板文件,或者,如果没有,它将使用index.php文件,它是任何没有更具体模板文件的页面的通用模板文件。

它会一次又一次地循环工作,获取和输出可能是您网站中最新的帖子,并显示摘录或完整内容。这取决于循环中的代码。

因此,无论您的主页以何种方式设置,它仍将使用循环来访问数据库并获取单个静态页面或最近发布的列表。

概括

WordPress 的强大之处在于它是一个内容管理系统。这意味着要创建一个网站,您不必编写任何代码。相反,您在 WordPress 管理屏幕中创建帖子和页面,然后 WordPress 将它们保存到数据库中,以便它们可以输出到您网站的相关页面上,以便人们可以访问它们。


文章目录
  • WordPress 的工作原理:数据库和文件
  • 帖子和页面的存储位置
  • WordPress 如何为您的页面获取内容
    • 单个帖子和页面
    • 存档页面
    • 主页
  • 概括