崇文建站:WordPress中的条件变量和数据库查询

2019.05.27 崇文建站

102

多年来,WordPress博客已经从充满基本内容的简单网站发展到了分类、标记、存档和组织良好的网站,这些网站包含了近十年的博客帖子、动态页面和其他信息。毫无疑问,使用WordPress软件的6千万用户已经将“内容管理系统”的标签放在心上。由于WordPress现在负责管理每个网站的大量信息,许多人发现几乎不可能使用内置的主题开发系统将内容正确地划分为单独的页面,有时具有不同的设计,而不需要创建一个不必要的复杂和扩展的文件结构。

实际上,崇文建站将内容拆分成独特的模板设计的最常见方法是,需要为每个页面创建一个新文件,这会导致服务器在WordPress软件对其资源征税时放慢速度。幸运的是,WP团队提供了一种使用数据库查询和条件变量“动态”修改模板的方法。

条件变量和数据库查询的优点

两者都有很大的优势条件变量数据库查询在WordPress模板中,可以使文件呈现完全独特的设计元素,甚至是不同的内容块,而无需用户创建一系列广泛的模板,以满足每个类别或作者的需要。它本质上支持信息的即时处理,并将仪表板创建的WordPress页面的动态风格引入到典型的静态PHP文件中,这些文件构成了传统的WordPress主题。由于这些模板文件仍然是单数文件,并且是动态处理和呈现的,因此服务器的性能没有受到真正的影响。在使用这种方法时,页面加载时间保持相对较快和一致,WordPress博客将不必牺牲沮丧的读者,因为他们根本没有时间等待第八类页面从服务器上删除并填充内容。

崇文建站

下面,WordPress开发人员和设计人员将学习如何利用他们模板中的数据库查询和条件变量来创建一个显示多个内容块的单一文件。这需要一个相当扎实的PHP和WordPress变量的工作知识,并且,为了设计目的,这些用户应该对如何使用XHTML和CSS有一个很好的掌握,这会使它变得美观。

我们开始吧。

步骤1:如何在没有条件变量的世界中分隔内容

2003年WordPress发布第一个软件版本时,该公司并不真正支持在其模板文件中使用数据库查询和条件变量。相反,它鼓励用户通过遵守WordPress文件层次结构来开发自定义模板类型,该层次结构通过为每个类别、作者或动态页面创建一个新文件来启用自定义设计和内容块。这是通过使index.php将安装的第一个模板文件归档。默认情况下,WordPress中创建的任何和所有内容都将使用index.php档案。接下来,层次结构处理单个模板文件,如archive.phpcategory.phppage.php。这允许作者创建独特的设计,适用于所有存档页、所有类别页或在WordPress仪表板中创建的所有动态页面。

对于大多数用户来说,这可能已经足够了,但是WordPress明白许多高级用户需要更多的灵活性。由于这个原因,开发人员在WordPress生态系统中包含了一种更加复杂的设计单个页面的方式。管理员或设计器可以创建特定于一个类别、页或作者的页模板,方法是将模板名称附加在ID号各自的元素。例如,一个名为“General”的类别,其ID号为“1”,可以通过创建该文件获得一个完全唯一的外观。category-1.php。同样,可以使用用户ID号创建模板,如author-4.php.

崇文建站通过使用文件层次结构,设计人员可以简单地创建一系列自定义模板,从而轻松地为每个页面提供独特的外观。然而,如前所述,这种方法使服务器负担沉重,被认为效率低下。WordPress背后的开发人员希望利用数据库交互和PHP变量,他们认为在模板文件中使用条件变量和实际查询将是减轻服务器负担和促进现在广泛接受的主题应该是紧凑和动态的观点的最佳方式。

步骤2:对模板中的条件变量进行转换和学习

不幸的是,在WordPress中使用条件变量和原始数据库查询确实存在显著的可用性缺陷。它要求用户接触PHP编程的一些最原始的元素,并提示使用WordPress变量和模板语义的速成课程。对于习惯于简单地开发多个模板文件的用户来说,知道何时部署这些查询和变量以及将它们放在模板文件中的位置可能会有些混乱。

第一步是简单地了解类别、作者或页面ID号,这些号码将用于查询数据库并提取数据的正确部分。这些信息可以在WordPress仪表板中找到,在旧安装的相关页面、作者或类别旁边列出。在最近的版本中,可以在原始浏览器URL中找到这些信息,在编辑这些内容区域时会显示该URL。查找URL片段,如category_id=3。这是将在相关数据库查询中使用的数字。

在模板文件中,设置了一个条件变量,从本质上说,“如果类别ID为3,则显示此信息。如果类别ID为4,则显示此信息。“这一过程一遍又一遍地重复,直到每一类问题都得到解决。还可以使用多个类别的条件语句,以便说“对于类别3、6、9、10和12,显示此模板。对于其他人,则显示标准模板。“当条件语句被看作仅仅是指令时,它们就更容易理解了。以下是如何自定义一个Author模板,以便为管理员用户显示一个自定义模板,同时通过在数据库查询中使用一个简单的条件变量,为安装中的所有常规作者显示一个标准模板:

<?php $post = $wp_query->user;
if ( is_author( '1' ) ) {
echo( ' ADMINISTRATOR TEMPLATE GOES HERE' );
} else {
echo( 'GENERAL AUTHOR TEMPLATE GOES HERE' );
}
?>

上面的查询可以很容易地扩展,指示为每个作者的ID号显示不同的模板。这将涉及创建一个is_author语句,用于WordPress安装中的每个作者ID。重要的是要记住永远不要删除else“但是,当使用自定义数据库查询时。这将允许在添加新作者而站点管理员或设计人员忘记为新作者创建模板的自定义版本时显示默认模板。它确保了站点的最大可用性和兼容性,并且它是WordPress模板中任何条件数据库查询的重要部分。

步骤3:学习如何使用查询控制WordPress循环的输出

上面的说明可以应用于WordPress主题中的每个页面、作者或类别模板,这是很棒的。但是,有一种无需使用条件变量来定制模板输出的更简单的方法。许多WordPress用户并不知道著名的WordPress循环实际上只受数据库查询的影响。默认情况下,它以升序或降序显示在任何类别中发布的所有内容。不过,只要稍微方便一些,WordPress循环就可以被严格控制,并且只能显示一系列条目。

这应该在模板中完成,例如index.php,可能需要创建分类的帖子列表,而不是不加区别地将其放入同一中心内容列中。它也可以在档案页上完成,将档案分成易于阅读的部分.这真的取决于WordPress设计者在哪里使用这种独特的结构;重要的部分是模糊地学习如何控制循环的输出。

当将标准WordPress循环转换为模板文件中的查询控制时,重要的是要记住这个过程需要一定的语法。在这种情况下,WordPress循环实际上将成为数据库查询的次要部分,数据库查询控制它可以显示哪些条目。因此,必须在插入WordPress循环代码之前将实际查询本身放在模板中。一个基本示例如下所示:

<?php query_posts('category_name=kittens&posts_per_page=15'); ?>

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

TYPICAL LOOP CONTENT AND VARIABLES ARE PLACED HERE.

<?php endwhile;?>

崇文建站上面的例子将显示被归入“Kitten”类别的15个最新帖子。这是通过使用类别的所谓“短名”来完成的,这个名称通常与其permalink URL相同。对于那些不确定这个类别的短名称的人来说Permalink URL,可以在WordPress仪表板类别管理区域中找到这些信息,或者设计人员只需单击类别链接,并在其浏览器窗口中检查最终得到的permalink URL。

值得注意的是,上面的示例只能用于任何给定模板中的第一个基于查询的WordPress循环表示。如果使用多个查询在单个页面中显示多个类别的内容,则必须为这些新查询指定一个唯一名称,以便将它们与上面列出的查询分开处理。如果不能区分这些查询,几乎肯定会导致将错误的PHP错误打印给最终用户,因此在模板文件中掌握多个自定义查询的使用是非常重要的。

如果上面的查询是众多查询中的一个,而且作者还希望显示列中的条目,这些条目被放入“puppies”和“ponies”等类别中,那么它们将创建一个新的查询,为其分配一个类别名称变量,然后实际上给查询本身一个不同的名称,将其与页面上的所有其他查询分隔开来。该示例如下所示:

<?php $puppy_query = new WP_Query('category_name=puppies&posts_per_page=15'); ?>

<?php while ($puppy_query->have_posts()) : $puppy_query->the_post(); ?>

在本例中,在第一行代码中为查询分配了一个变量。然后,必须在生成的WordPress循环的开头行中使用该变量,以便使该循环与页面上的其他循环区分开来。这是一个由两部分组成的过程;如果不能将查询名称引入原始查询语句以及WordPress循环的开始代码行,将导致页面向最终用户打印错误。

步骤4:错误测试和部署新模板

随着基于查询的模板文件现在已经完成,是时候保存和上传每个修改的文件到服务器和测试新的模板在生产网站上。确保每个作者页或类别页显示每个类别名称或作者ID号的正确信息,并在执行这些操作时监视页面加载时间和总体性能。当一切都被验证为正确工作时,流程就完成了,主题可以被认为是优化的、高效的和完全动态的。


最新案例

寒枫总监

来电咨询

18868949445

微信咨询

寒枫总监

TOP