分类: WordPress开发

  • 如何使用Varying Vagrant Vagrants (VVV) 进行WordPress开发

    如何使用Varying Vagrant Vagrants (VVV) 进行WordPress开发

    开发您的网站始终是一个里程碑式的时刻,尤其是当您是第一次时。然而,尽管几乎每个主机都提供了一种在您的服务器上启动WordPress安装的方法,但不建议这样做。

    更好的方法是在您的计算机上创建一个站点,并在您准备好后上传它。使用诸如Varying Vagrant Vagrants (VVV)之类的工具进行WordPress开发是一种很棒的、平台推荐的方法。

    在本文中,我们将向您展示如何启动和运行VVV。在此之前,我们还将讨论可供您使用的替代方案。首先,让我们讨论一下为什么您不应该在线开发您的网站。

    为什么要创建本地WordPress网站

    在创建WordPress 网站(尤其是您的第一个网站)时,您的主机通常会成为首选资源或支持点。这是因为您的主机应该比任何人都更了解如何最好地安装和使用它提供的站点创建包。

    但是,在实时服务器上开发WordPress网站并不是最好的方法,原因如下:

    • 您在不需要时使用您网站的资源。
    • 尽管可能可以访问暂存或站点限制功能,但您仍在“公开”开发您的站点。
    • 任何开发错误都可能影响您网络上的所有站点,如果发生最坏的情况会导致混乱。
    • 在实时服务器上开发您的网站存在安全问题,因为您的网站在很长一段时间内自然会不完整。

    也有很多连锁反应,比如感觉你在让你的网站上线时是在争分夺秒。因此,离线并给自己一个“有围墙的沙盒”环境来开发您的网站更容易在钱包和神经上。

    本地网站开发:您需要了解的基础知识

    本地网站开发通常涉及使用“堆栈”软件尽可能模拟实时服务器。传统上,网站将使用实时服务器上常见的软件在“LAMP”堆栈上开发:

    结合起来,这会将您的计算机变成本地服务器,让您在与实时服务器类似的环境中完整地创建和测试您的站点。

    然而,传统的LAMP堆栈也有缺点:它可能会占用大量资源,并且不是一致的远程开发的最佳解决方案。

    Vagrant等工具旨在提供精益且可移植的虚拟开发环境。结合VirtualBoxVMware等解决方案,您可以创建“虚拟机”——封装的服务器,本质上是可以在其中工作的全功能计算机。

    为WordPress开发引入Varying Vagrant Vagrants (VVV)

    总而言之,虽然传统的LAMP堆栈是一种在本地开发网站的可靠方法,但Vagrant和VirtualBox等工具会加速这一过程。

    Varying Vagrant Vagrants (VVV)是一个听起来很奇怪的解决方案,可帮助您利用虚拟机的力量来创建WordPress网站。如果您采用传统的开发路线,这通常需要一些额外的步骤。

    它是从命令行运行的,并且几乎包括您进行设置所需的一切:

    teddy bear命令窗口

    安装后,您可以从命令行vagrant up使用启动VVV,然后使用vagrant halt停止它。站点在专用配置文件中创建:

    默认配置

    您对VVV安装所做的任何更改都需要使用专用命令provision进行“配置”。

    您创建的站点在虚拟沙盒环境中运行。这意味着任何问题都是该环境独有的,不会影响您的实际计算机。

    WordPress已安装并准备好开始运行,因此一旦创建了站点,您就可以像访问实时站点一样访问它,使用.test作为您的顶级域 (TLD)。但是,在大多数情况下,这些站点只能通过您的计算机访问。

    这对于运行类似服务器的配置非常有用,因为您可以使用与实时服务器类似的设置,并在开发过程中诊断任何错误。通过在开发环境和实时服务器之间建立更一致的路径,您可能会节省时间和金钱。

    改变流浪者的替代方案

    虽然本文将重点介绍使用VVV进行WordPress开发,但值得一提的是一些替代方案。VVV不会是适合所有人的解决方案。

    考虑到您将使用多少命令行和配置文件,我们建议您至少需要代码的工作知识。调试VVV问题也必须通过命令行进行。更重要的是,支持渠道是通过GitHub实现的,因此您需要能够向其他程序员表达您的问题。

    如果您想利用VVV的强大功能但不喜欢编码的想法,那么有一些不错的选择。

    1.最有名的是DesktopServer

    DesktopServer

    它使用“XAMPP”堆栈通过专用的图形用户界面 (GUI) 创建WordPress站点,并且超级快速且易于使用。

    2.另一个类似的选择是Local by Flywheel

    Local by Flywheel

    它的GUI外观可以说是更时尚,并且使用Docker运行得更快——考虑这是Vagrant的替代品。

    虽然这两种解决方案都有免费套餐,但Local功能更全面。但是,这两种解决方案都具有许多很酷的高级功能,可以检查是否平衡了竞争环境。

    如何使用Varying Vagrant Vagrants (VVV) 进行WordPress开发

    诚然,设置VVV比其他解决方案更复杂。但是,您在易于设置方面失去的东西,您在灵活性和便携性方面获得了优势。

    以下是创建VVV WordPress网站的四个步骤:

    1. 在开始之前获取所需的工具
    2. 使用命令行安装VVV
    3. 使用config.yml文件创建新站点。
    4. 使用VVV仪表盘访问您的站点

    让我们来看看每一步,从你的工具开始。

    第 1 步:收集工具

    任何一位优秀的厨师都是在现场就餐的。换句话说,要创建一个WordPress开发环境,您需要将所有工具和技能放在一起,准备开始。

    VVV有一些系统和软件要求。这是您需要的:

    • 对命令行的管理访问权限。无论您的操作系统默认使用什么(例如Mac上的终端、Windows上的命令提示符和Linux上的Shell)都是完美的。如果您对这些生疏了,你可能还需要完善你的技能。
    • 最新版本的流浪者。这是您将用于为安装提供动力的堆栈,可以使用标准下载包进行安装。
    • 最新版本的VirtualBox。这为您的VVV安装提供了虚拟操作系统。同样,这是一个简单的下载。
    • Git版本控制系统 (VCS)。这是一个以开发人员为中心的工具,可让您跟踪您创建的项目中的更改。对于这个应用程序,我们将使用它来下载VVV。

    在开始安装VVV之前,最好先下载并安装计算机上尚未安装的任何组件。VVV中的错误可能会令人沮丧,并且不建议采取诱人的命运,特别是如果这是您第一次使用所涉及的软件。

    另外,请注意,具有M1处理器的Mac机器目前无法使用VVV和VirtualBox(由于后者存在问题),除非您使用无法始终如一的解决方法。因此,您可能需要考虑替代解决方案,至少是暂时的。

    第 2 步:在您的计算机上安装VVV

    总而言之,在此步骤之前,您需要安装Vagrant、VirtualBox和Git。准备好后,打开命令行,然后键入以下内容:

    git clone -b stable git://github.com/Varying-Vagrant-Vagrants/VVV.git ~/vagrant-local
    git clone -b stable git://github.com/Varying-Vagrant-Vagrants/VVV.git ~/vagrant-local
    git clone -b stable git://github.com/Varying-Vagrant-Vagrants/VVV.git ~/vagrant-local

    这要求Git VCS复制给定URL处的文件,并将其下载到名为vagrant-local的文件夹中,该文件夹位于您的文件夹中:

    克隆vvv

    这应该需要几秒钟的时间,具体取决于您的互联网连接,一旦您收到成功消息,您几乎可以启动并运行。

    第 3 步:在config.yml文件中创建新站点

    在第一次启动VVV之前,最好创建一个新的config.yml文件副本。这会保留默认站点,并让您有机会创建新站点:

    • 打开命令行并使用cd vagrant-local命令进入您的主VVV文件夹(通常为vagrant-local)。
    • 运行vagrant status,这将复制并重命名文件。

    接下来,在AtomSublime Text等文本编辑器中打开config.yml文件。

    编辑config.yml文件

    此文件包含创建和管理站点所需的所有配置:

    站点配置

    有很多选择,尽管我们将专注于网站部分。在这里,遵循现有站点的格式和布局,并添加以下“boilerplate”代码:

    mysite:repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template.githosts:- mysite.test
    mysite:repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template.githosts:- mysite.test
    mysite:repo: https://github.com/Varying-Vagrant-Vagrants/custom-site-template.githosts:- mysite.test

    这告诉VVV使用URL mysite.test使用预定义的模板创建一个新站点。准备好后,保存更改,然后返回命令行。

    第 4 步:访问您的VVV WordPress网站

    最后一步是访问您的VVV WordPress网站。您可以在基于浏览器的仪表盘中找到它们,要访问它,请执行以下操作:

    • 打开命令行,并通过运行cd vagrant-local确保您位于正确的目录中。
    • 运行vagrant up。这告诉Vagrant和VVV开始。
    • 可能输入您的管理员密码,然后按照说明安装GoodHosts插件,该插件可让您使用“漂亮”的URL访问仪表盘。
    • 选择一个网络——通常是选项1下的Wi-Fi 。

    在这一点上,你应该耐心等待VVV做它的事情。看到“泰迪熊”和VVV徽标后,您就可以访问仪表盘了。

    打开您的VVV WordPress网站

    要访问仪表盘,请打开浏览器并前往vvv.test。您将看到所有网站的列表(带有可点击的URL)以及其他相关信息:

    vvv仪表盘

    请注意,您无需在每次启动VVV时都访问仪表盘。您可以直接前往您网站的wp-admin页面直接登录,就像使用任何其他WordPress网站一样。默认凭据是:

    • 用户名: 管理员
    • 密码: 密码

    最后,您可以在config.yml文件中扩展站点模板,以创建完全自定义的WordPress安装版本。官方GitHub VVV页面提供了所有详细信息,甚至包括各种利基WordPress网站的示例。

    小结

    启动一个新的WordPress网站充满了兴奋和希望,因为这意味着您的项目正处于下一个阶段。为确保您只专注于开发您的网站,我们建议您使用本地工具,例如VVV

    这篇文章提供了开始使用VVV进行WordPress开发的四个步骤。让我们回顾一下这些步骤:

    1. 下载并安装运行VVV所需的一切,例如VagrantVirtualBox以及系统所需的任何东西。
    2. 通过命令行安装VVV。
    3. config.yml文件中为您的新站点创建参数。
    4. 启动VVV WordPress站点的专用URL并开始开发它。
  • 如何使用PHP函数get_posts来构建文章列表

    如何使用PHP函数get_posts来构建文章列表

    WordPress的get_posts是一个强大的函数,允许开发人员从WordPress数据库中检索内容。您可以最详细地指定要查找的文章、页面和自定义文章类型,获取自定义结果集,然后像PHP/MySQL忍者一样过滤和排序项目。

    但是,如果您不是PHP专业人士,请不要害怕,有无数的PHP教程可供您观看或阅读并学习该语言。您只需要一点PHP知识即可创建自定义文章列表以显示在您的网站上,因为get_posts函数保留了一组参数,允许构建简单或高级查询。

    使用WordPress的get_posts分为两个步骤:

    • 首先,您必须构建自定义查询。实际上,它看起来不像MySQL查询,而且您不会编写任何SELECT语句。您只需要定义一个参数数组并将其传递给get_posts函数。WordPress将该数组转换为真实且安全的MySQL查询,针对数据库运行它,并返回一个文章数组。
    • 其次,您必须使用foreach循环遍历get_posts返回的结果集。

    话虽如此,在这篇文章中,我们将首先深入探讨上面提到的关键概念,特别是如何get_posts工作、如何构建自定义查询以及如何在前端站点上显示数据。然后,我将提供一个真实示例,其中包含一段代码,您可以在暂存环境中获取、编辑和使用代码片段,以进行测试和开发。

    注意:我们通常区分文章、页面和自定义文章类型。在本文中,我们使用术语“post”来表示常规博客文章以及页面和自定义文章类型。所有这些文章类型都存储在数据库的“wp_posts”表中。文章类型之间的主要区别在于“post_type”字段的值。从开发人员的角度来看,文章、页面和自定义文章类型都是文章

    get_posts 函数简介

    Codex对get_posts函数的描述如下:

    检索最新文章的数组,或与给定条件匹配的文章。

    我们可以这样使用get_posts

    $args = array(
    ‘numberposts’=> 20,
    ‘category’=> 4
    );
    $my_posts = get_posts( $args );
    if( ! empty( $my_posts ) ){
    $output = ‘<ul>’;
    foreach ( $my_posts as $p ){
    $output .= ‘<li><a href=”‘ . get_permalink( $p->ID ) . ‘”>’
    . $p->post_title . ‘</a></li>’;
    }
    $output .= ‘</ul>’;
    }
    $args = array(
    ‘numberposts’=> 20,
    ‘category’=> 4
    );
    $my_posts = get_posts( $args );
    if( ! empty( $my_posts ) ){
    $output = ‘<ul>’;
    foreach ( $my_posts as $p ){
    $output .= ‘<li><a href=”‘ . get_permalink( $p->ID ) . ‘”>’
    . $p->post_title . ‘</a></li>’;
    }
    $output .= ‘</ul>’;
    }
    $args = array(
    'numberposts'=> 20,
    'category'=> 4
    );
    $my_posts = get_posts( $args );
    if( ! empty( $my_posts ) ){
    $output = '<ul>';
    foreach ( $my_posts as $p ){
    $output .= '<li><a href="' . get_permalink( $p->ID ) . '">' 
    . $p->post_title . '</a></li>';
    }
    $output .= '</ul>';
    }

    上面的函数检索指定类别中的最新20篇博文(默认为'post_type'is 'post')并返回一个对象数组$post。您可以遍历数组以在屏幕上显示文章。这很容易,对吧?

    get_posts 用于WP_Query检索文章项目,并且它保留了一个包含相同参数的数组WP_Query(除了少数例外)。所以我们有一个庞大的变量列表,可以用来构建我们的自定义查询。这些参数分为以下15个类别

    • Author参数
    • Category参数
    • Tag参数
    • Taxonomy参数
    • Search参数
    • Post & Page参数
    • Password参数
    • Post Type参数
    • Order & Orderby参数
    • Date参数
    • Custom Field (post meta) 参数
    • Permission参数
    • Mime Type参数
    • Caching参数
    • Return Fields参数

    快速查看上面的列表可以让您了解可以针对WordPress数据库构建和运行的各种自定义查询。因此,让我们更深入地研究查询参数并开始构建我们的文章列表。

    如何使用get_posts构建查询

    每一类参数都与同一条信息相关。例如,我们可以构建一个查询来检索指定作者或排除指定作者的文章,通过ID或nicename定义作者。同样,我们可以构建查询,按类别、标签、分类、日期、自定义字段等获取文章。

    如何使用参数构建简单查询

    许多参数可以以非常相似的方式使用,无论它们属于哪个类别。例如,以下参数允许按文章作者查询数据库:

    • authorint ) – 作者ID
    • author_name字符串)——作者的user_nicename
    • author__inarray ) – 多个作者ID的数组
    • author__not_inarray ) — 要从结果集中排除的多个作者ID的数组

    我们如何使用这些参数?

    在以下示例中,参数'author' 指定我们想要ID = 1的作者最近撰写的博客文章:

    $my_posts = get_posts( array( ‘author’ => 1 ) );
    $my_posts = get_posts( array( ‘author’ => 1 ) );
    $my_posts = get_posts( array( 'author' => 1 ) );

    相同的 ‘author’参数允许以不同的方式查询数据库:

    // return an array of posts from specific authors
    $my_posts = get_posts( array( ‘author’ => ‘1,5,12’ ) );
    // return an array of posts from specific authors
    $my_posts = get_posts( array( ‘author’ => ‘1,5,12’ ) );
    // return an array of posts from specific authors
    $my_posts = get_posts( array( 'author' => '1,5,12' ) );
    // return an array of posts excluding the specified author
    $my_posts = get_posts( array( ‘author’ => -1 ) );
    // return an array of posts excluding the specified author
    $my_posts = get_posts( array( ‘author’ => -1 ) );
    // return an array of posts excluding the specified author
    $my_posts = get_posts( array( 'author' => -1 ) );

    因此,根据参数的值,您将获得一个结果集,其中包含来自单个作者(整数)、来自多个作者(逗号分隔值列表)或不包括作者(负值)的文章。

    其他参数提供了额外的灵活性。例如,以下调用get_posts返回多个作者的最新博客文章数组:

    // return an array of posts from multiple authors
    $my_posts = get_posts( array( ‘author__in’ => array( 1, 5, 12 ) ) );
    // return an array of posts from multiple authors
    $my_posts = get_posts( array( ‘author__in’ => array( 1, 5, 12 ) ) );
    // return an array of posts from multiple authors
    $my_posts = get_posts( array( 'author__in' => array( 1, 5, 12 ) ) );

    我们还可以排除多个作者:

    // return an array of posts from multiple authors
    $my_posts = get_posts( array( ‘author__not_in’ => array( 1, 5, 12 ) ) );
    // return an array of posts from multiple authors
    $my_posts = get_posts( array( ‘author__not_in’ => array( 1, 5, 12 ) ) );
    // return an array of posts from multiple authors
    $my_posts = get_posts( array( 'author__not_in' => array( 1, 5, 12 ) ) );

    同样,我们可以使用类别参数、标签参数、文章类型参数,但有一些具体的区别。例如,请参见类别参数:

    • cat整数
    • category_name字符串
    • category__and数组
    • category__in数组
    • category__not_in数组

    无论如何,并非所有参数都像这些参数一样易于使用。此外,我们可以在单个查询中使用类别参数、文章类型参数、mime类型参数等。这意味着我们可以对结果集中的项目进行精细控制,并且可以完全基于文章类型、自定义分类法和自定义字段构建更高级的查询。

    所以,让我们更深入地研究吧!

    如何在WordPress中构建高级查询

    让我们通过基于自定义文章类型和自定义分类的更高级查询向前迈出一步。假设您有以下文章类型:

    名称:书籍

    分类名称:book_category、book_author

    支持:标题、编辑器、缩略图、摘录、自定义字段

    自定义文章类型和自定义分类法

    假设您想要指定自定义分类book_category中最新书籍的列表。这是参数数组:

    $args = array(
    ‘post_type’=> ‘book’,
    ‘tax_query’=> array(
    array(
    ‘taxonomy’=> ‘book_category’,
    ‘field’=> ‘slug’,
    ‘terms’=> ‘sci-fi’
    )
    ),
    );
    $args = array(
    ‘post_type’=> ‘book’,
    ‘tax_query’=> array(
    array(
    ‘taxonomy’=> ‘book_category’,
    ‘field’=> ‘slug’,
    ‘terms’=> ‘sci-fi’
    )
    ),
    );
    $args = array(
    'post_type'=> 'book',
    'tax_query'=> array(
    array(
    'taxonomy'=> 'book_category',
    'field'=> 'slug',
    'terms'=> 'sci-fi'
    )
    ),
    );

    上面的参数只是告诉WordPress检索'sci-fi' 'book_category'.

    参数采用'tax_query'参数数组的数组(即数组数组)。这些嵌套数组允许基于多种分类构建非常复杂的查询,如下例所示:

    $args = array(
    ‘numberposts’=> 10,
    ‘post_type’=> ‘book’,
    ‘relation’=> ‘AND’,
    ‘tax_query’=> array(
    array(
    ‘taxonomy’=> ‘book_category’,
    ‘field’=> ‘slug’,
    ‘terms’=> ‘sci-fi’
    ),
    array(
    ‘taxonomy’=> ‘book_author’,
    ‘field’=> ‘term_id’,
    ‘terms’=> 22
    )
    )
    );
    $args = array(
    ‘numberposts’=> 10,
    ‘post_type’=> ‘book’,
    ‘relation’=> ‘AND’,
    ‘tax_query’=> array(
    array(
    ‘taxonomy’=> ‘book_category’,
    ‘field’=> ‘slug’,
    ‘terms’=> ‘sci-fi’
    ),
    array(
    ‘taxonomy’=> ‘book_author’,
    ‘field’=> ‘term_id’,
    ‘terms’=> 22
    )
    )
    );
    $args = array(
    'numberposts'=> 10,
    'post_type'=> 'book',
    'relation'=> 'AND',
    'tax_query'=> array(
    array(
    'taxonomy'=> 'book_category',
    'field'=> 'slug',
    'terms'=> 'sci-fi'
    ),
    array(
    'taxonomy'=> 'book_author',
    'field'=> 'term_id',
    'terms'=> 22
    )
    )
    );

    这些参数允许我们检索由ID #22编写的最新10个'book'文章类型的列表。该参数设置 中列出的每个分类之间的逻辑关系。上面我们将其值设置为,因为我们需要检索属于作者 #22 所写类别的所有书籍。AND

    这些参数允许我们检索由ID为#22的'book_author'编写的'sci-fi''book_category'中最新10种“book”文章类型的列表。'relation'参数设置'tax_query'中列出的每个分类法之间的逻辑关系。在上面,我们将其值设置为AND,因为我们需要检索属于 'sci-fi'类别AND 由作者#22撰写的所有书籍。

     

    如何使用自定义字段参数构建元查询

    有时,您可能需要根据特定的自定义字段键和/或值构建文章列表。

    $args = array(
    ‘meta_key’=> ‘cover’,
    ‘meta_value’=> ‘paperback’,
    ‘meta_compare’=> ‘=’
    );
    $args = array(
    ‘meta_key’=> ‘cover’,
    ‘meta_value’=> ‘paperback’,
    ‘meta_compare’=> ‘=’
    );
    $args = array(
    'meta_key'=> 'cover',
    'meta_value'=> 'paperback',
    'meta_compare'=> '='
    );

    这些参数允许我们通过自定义字段键和值检索所有文章。'meta_compare'设置测试'meta_value'参数值所需的运算符。这里的'meta_value''=',这也是默认值。

    可用值为'=''!=''>''>=''<''<=''LIKE''NOT LIKE''IN''NOT IN''BETWEEN''NOT BETWEEN''NOT EXISTS''REGEXP','NOT REGEXP''RLIKE'.

    这是一个非常简单的示例,但我们可以构建更高级的查询。在下一个示例中,我们在数据库中查询2010年之后出版的奇幻书籍:

  • 如何为古腾堡创建动态区块

    如何为古腾堡创建动态区块

    你还在为古腾堡感到困惑吗?或者您是那些坚信区块编辑器的潜力并想知道使用区块编辑器可以将他们的创造力推到多远的人中的一员?

    无论您属于哪种类型的用户,古腾堡都会留下来,这篇文章将让您深入了解 WordPress 块编辑器幕后发生的事情。但这还不是全部!

    我们之前的教程中我们提供了对Gutenberg区块开发的一般介绍之后,本文超越了基础知识,介绍了更高级的区块类型。这些块被称为动态区块。

    今天,您将了解什么是动态区块、它们是如何工作的,以及从头开始创建动态区块所需了解的一切。

    那么,什么是Gutenberg动态区块,静态区块和动态区块之间的主要区别是什么?

    1. 什么是动态区块?一个例子
    2. 从开发人员的角度来看Gutenberg动态区块
    3. 如何访问文章数据
    4. 如何创建动态区块:示例项目
    5. 在编辑器中构建要渲染的区块
    6. 构建要在页面上呈现的区块
    7. 动态区块开发的推荐资源

    什么是动态区块?一个例子

    使用静态区块时,用户在编辑文章或页面时手动添加内容,而使用动态区块时,内容会在页面加载时动态加载和处理。使用动态区块,区块内容从数据库中提取并按原样显示或由任何类型的数据操作产生。

    让我们用一个例子来解释一下。假设您要创建一组嵌套区块,显示文章作者详细信息以及来自同一作者的最新文章的选择。

    包括文章作者和最新文章组区块

    包括文章作者和最新文章组区块

    作为Gutenberg用户,您可以使用以下区块:

    • 标题核心区块
    • 文章作者核心区块
    • 最新文章核心区块

    您还可以创建一个包含这些区块的组,并将该组添加到可重复使用的区块中以供将来使用。

    将组区块添加到可重用区块

    将组区块添加到可重用区块

    这很简单,不是吗?您可以创建一个动态区块并将其添加到您的文章和页面中。

    WordPress 5.9开始,区块编辑器提供了90多个不同的区块,您很可能会立即找到适合您的区块。而且,如果您需要更多,请在WordPress插件目录中快速搜索,您会发现很多免费插件提供了额外的区块

    但是,如果您是WordPress开发人员,或者您正计划从事WordPress开发人员的职业怎么办?也许您有非常特定的需求,找不到您正在寻找的区块,或者您只是想获得新的专业技能。在这种情况下,您可能想学习如何创建动态区块。

    从开发人员的角度来看Gutenberg动态区块

    动态区块有两个主要用例。

    第一个用例是当包含区块的页面尚未更新时,您需要更新区块的内容。例如,当区块包含最新文章或评论的列表时会发生这种情况,并且通常每当区块的内容是使用从数据库检索的数据动态生成时。

    添加查询循环区块

    添加查询循环区块

    第二个用例是需要立即在前端显示对区块代码的更新。使用动态区块而不是静态区块会导致更改立即应用于所有出现的区块。

    另一方面,如果您要更改由静态区块生成的HTML,用户将看到一个无效对话框,直到该区块的先前版本的每个实例都被删除并替换为新版本,或者您将旧版本标记为不推荐使用的版本(另请参阅弃用区块验证、弃用和迁移经验)。

    意外或无效的内容

    意外或无效的内容

    话虽如此,在开始构建动态区块之前,您需要了解一些概念。

    1. 应用程序状态和数据存储
    2. Gutenberg中的模块化、包和数据存储
    3. WordPress数据存储

    应用程序状态和数据存储

    Gutenberg是一个React SPA应用程序,Gutenberg中的所有内容都是一个React组件。编辑器中的文章标题、标题、段落、图像和任何HTML内容块都是React组件,以及侧边栏和区块工具栏控件。

    在我们之前的文章中,我们只使用属性来存储数据。在本文中,我们将通过引入state的概念更进一步。

    简单地说,state对象是一个普通的JavaScript对象,用于包含有关组件的信息。组件的state可以随着时间而改变,并且任何时候改变,组件都会重新渲染。

    state对象类似,属性是普通的JavaScript对象,用于保存有关组件的信息。但是props和state之间有一个关键区别

    props传递给组件(类似于函数参数),而状态在组件内管理(类似于在函数中声明的变量)。

    您可以将状态视为在给定时间点获取的数据快照,应用程序存储这些数据以控制组件的行为。例如,如果块编辑器设置侧边栏打开,则一条信息将存储在state对象的某个位置。

    当信息在单个组件内共享时,我们称之为本地状态。当信息在应用程序内的组件之间共享时,我们称之为应用程序状态

    Application State与store的概念密切相关。根据Redux文档

    一个store保存着应用程序的整个状态树。更改其内部状态的唯一方法是在其上分派一个操作

    因此,Redux将应用程序状态存储在单个不可变对象树(即存储)中。对象树只能通过使用actionsreducers创建新对象来更改。

    在WordPress中,商店由WordPress数据模块管理。

    Gutenberg中的模块化、包和数据存储

    Gutenberg存储库从头开始构建在几个可重用且独立的模块上,这些模块组合在一起构建了编辑界面。这些模块也称为

    官方文档列出了两种不同类型的包

    • 生产包组成了在浏览器中运行的生产代码。WordPress中有两种类型的生产包:
    • 开发包用于开发模式。这些包包括用于linting、测试、构建等的工具。

    在这里,我们最感兴趣的是带有数据存储的包,用于检索和操作数据。

    WordPress数据存储

    WordPress 数据模块建立在Redux之上,并共享三个Redux核心原则,尽管有一些关键区别

    Info Redux是JavaScript应用程序的状态管理器。Redux的工作方式总结为三个基本原则

    • 单一事实来源:应用程序的全局状态存储在单个存储中的对象树中。
    • 状态是只读的:改变状态的唯一方法是发出一个动作,一个描述发生了什么的对象。
    • 使用纯函数进行更改:要指定状态树如何通过操作进行转换,您可以编写纯reducer。

    官方文档提供了以下定义

    WordPress的数据模块用作管理插件和 WordPress 本身的应用程序状态的中心,提供工具来管理不同模块内和模块之间的数据。它被设计为一种用于组织和共享数据的模块化模式:简单到足以满足小型插件的需求,同时可扩展以服务于复杂的单页应用程序的需求。

    默认情况下,Gutenberg在应用程序状态中注册多个数据存储。这些商店中的每一个都有特定的名称和用途:

    通过这些商店,您将能够访问一大堆数据:

    1. 与当前文章相关的数据,例如文章标题、摘录、类别和标签、区块等。
    2. 与用户界面相关的数据,即开关是打开还是关闭。
    3. 与整个WordPress安装相关的数据,例如注册分类法、文章类型、博客标题、作者等。

    这些存储存在于全局wp对象中。要访问商店的状态,您将使用select函数。

    要查看它是如何工作的,请创建一个新文章或页面并启动浏览器的检查器。找到控制台并输入以下代码行:

    wp.data.select(“core”)
    wp.data.select(“core”)
    wp.data.select("core")

    结果将是一个对象,其中包含可用于从core数据存储中获取数据的函数列表。这些函数称为选择器并充当访问状态值的接口。

    核心WordPress数据存储对象

    核心WordPress数据存储对象

    Info selectors对象包括一组用于访问和导出状态值的函数。选择器是一个接受状态和可选参数并从状态返回一些值的函数。调用选择器是从您的状态中检索数据的主要机制,并作为对原始数据的有用抽象,这些原始数据通常更容易更改并且不太容易用作规范化对象。(来源:Github

    WordPress数据存储通常包含有关WordPress的信息,选择器是您获取该信息的方式。例如,getCurrentUser()返回当前用户的详细信息:

    wp.data.select(“core”).getCurrentUser()
    wp.data.select(“core”).getCurrentUser()
    wp.data.select("core").getCurrentUser()

    检查getCurrentUser响应

    检查getCurrentUser响应

    另一个可用于从数据存储中检索用户详细信息的选择器是getUsers():

    wp.data.select(“core”).getUsers()
    wp.data.select(“core”).getUsers()
    wp.data.select("core").getUsers()

    下图显示了响应对象:

    检查getUsers响应

    检查getUsers响应

    要获取单个用户的详细信息,您只需键入以下行:

    wp.data.select(“core”).getUsers()[0]
    wp.data.select(“core”).getUsers()[0]
    wp.data.select("core").getUsers()[0]

    使用相同的选择器,您还可以检索author分配了角色的站点用户:

    wp.data.select( ‘core’ ).getUsers({ who: ‘authors’ })
    wp.data.select( ‘core’ ).getUsers({ who: ‘authors’ })
    wp.data.select( 'core' ).getUsers({ who: 'authors' })

    您还可以检索已注册的分类法:

    wp.data.select(“core”).getTaxonomies()
    wp.data.select(“core”).getTaxonomies()
    wp.data.select("core").getTaxonomies()

    检查getTaxonomies响应

    检查getTaxonomies响应

    已注册的文章类型列表:

    wp.data.select(“core”).getPostTypes()
    wp.data.select(“core”).getPostTypes()
    wp.data.select("core").getPostTypes()

    或插件列表:

    wp.data.select(“core”).getPlugins()
    wp.data.select(“core”).getPlugins()
    wp.data.select("core").getPlugins()

    现在让我们尝试访问不同的数据存储。为此,您仍将使用select函数,但提供不同的命名空间。让我们尝试以下方法:

    wp.data.select(“core/edit-post”)
    wp.data.select(“core/edit-post”)
    wp.data.select("core/edit-post")

    现在您将获得以下响应对象。

    访问编辑器的UI数据

    访问编辑器的UI数据

    如果您想知道设置侧边栏是否打开,您可以使用isEditorSidebarOpened选择器:

    wp.data.select(“core/edit-post”).isEditorSidebarOpened()
    wp.data.select(“core/edit-post”).isEditorSidebarOpened()
    wp.data.select("core/edit-post").isEditorSidebarOpened()

    如果侧边栏打开,则此函数返回true

    侧边栏已打开

    侧边栏已打开

    如何访问文章数据

    您现在应该对如何访问数据有了基本的了解。现在我们将仔细研究一个特定的选择器getEntityRecords函数,它是提供对post数据的访问权限的选择器。

    在块编辑器中,右键单击并选择Inspect。在控制台选项卡中,复制并粘贴以下行:

    wp.data.select(“core”).getEntityRecords(‘postType’, ‘post’)
    wp.data.select(“core”).getEntityRecords(‘postType’, ‘post’)
    wp.data.select("core").getEntityRecords('postType', 'post')

    这会向Rest API发送请求,并返回与上次发布的博客文章相对应的记录数组。

    getEntityRecords返回文章列表

    getEntityRecords返回文章列表

    Info 请注意,第一次将请求发送到Rest API时,响应将一直持续为null到请求完成。所以,如果你得到null了,不用担心,然后再试一次。

    getEntityRecords接受三个参数

    • kind 字符串:实体类型(即postType)。
    • name 字符串:实体名称(即post)。
    • query ?Object:可选术语查询(即{author: 0})。

    您可以使用arguments对象构建更具体的请求。

    例如,您可以决定响应应该只包含指定类别的文章:

    wp.data.select
  • 如何创建一个有效的WordPress开发流程

    如何创建一个有效的WordPress开发流程

    WordPress是一个伟大的平台,但它有时也会有点无序–至少从代码的角度来看。这是因为代码已经经历了许多迭代,随着更新的推出,有时事情的编码并不像他们可以做的那样有效。

    虽然代码有时会有点乱,但这并不意味着你的开发过程也要跟着乱。虽然混乱的代码常常因为快速的生产计划而被原谅,但作为一个网络开发者,通过实施适当的工作流程,你实际上可以赚取更多。

    在这篇文章中,我们将介绍一些提示,帮助你用手头正确的工具以正确的方式开发WordPress网站。我们还将提供一个循序渐进的步骤,以帮助你遵循这些提示。

    通过遵循本指南,你可以避免开发WordPress网站时出现的一些常见问题。而且,你也将能够创建一个易于维护和更新的网站。

    1. 高质量代码的属性
    2. 为什么WordPress开发需要顶级的编码实践
    3. WordPress开发流程改进技巧
    4. 为什么花时间在WordPress开发流程规划上是至关重要的
    5. 理想的WordPress开发流程

    高质量代码的属性

    在我们深入研究关于创建WordPress开发工作流程的完整指南之前,让我们暂停一下,讨论一下为什么高质量的代码实际上很重要。很重要。

    当考虑你的网站的代码时,有几个关键属性你应该记住。这些属性将有助于确保你的代码是干净的,有条理的,并且易于理解。

    以下是高质量代码的一些属性。

    • 精简
    • 易行
    • 模块化
    • 评论良好
    • 可重复使用,易于维护

    这些属性可能看起来有很多需要记住,但不要担心。我们将在我们的指南中全面介绍如何实现每个属性。但首先,我们需要谈谈为什么你的开发工作流程必须遵守这些标准。

    为什么WordPress开发需要顶级的编码实践

    为了使WordPress网站正常运行,构成网站的代码需要是高质量的。这对WordPress网站尤其重要,因为它们通常很复杂,有许多不同的移动部件。

    有很多原因说明编码实践对WordPress的发展很重要。

    • WordPress网站很复杂。
    • 一行代码可以产生很大的影响。
    • 代码需要写得很好并经过良好的测试。
    • 高质量的代码更容易维护。
    • 优质的代码可以帮助提高性能。

    在你的发展规划过程中牢记这些要点,可以帮助你把注意力放在奖品上,可以这么说。

    WordPress开发流程改进技巧

    现在我们已经谈到了为什么拥有良好的代码是很重要的,让我们来看看一些提示,以帮助你改善你的WordPress工作流程的每一个项目。下面的每一个提示都将有助于确保你的WordPress代码是干净和优化的,这是你在2022年及以后应该优先考虑的。

    利用暂存环境

    暂存网站是你的真实网站的一个副本,你可以用它来测试变化,然后再在你的真实网站上做这些变化。这是一个有价值的工具,因为它允许你在不影响你的真实网站的情况下对变化进行试验。

    使用暂存网站有许多好处。

    1. 你可以在你的真实网站上进行修改之前测试这些修改。
    2. 你可以通过在一个暂存网站上测试来避免潜在的问题。
    3. 你可以确保你的改变是按预期进行的。
    4. 你可以避免你的实时网站的潜在停机时间。
    5. 你可以减少破坏你的直播网站的风险。

    实施版本控制

    版本控制是一个跟踪文件随时间变化的系统。这对WordPress的开发很有价值,因为它允许你跟踪变化,并在必要时恢复到早期版本。

    对大多数人来说,这意味着使用Git,它是一个流行的版本控制系统。如果你不熟悉,Git是一个免费和开源的分布式版本控制系统,旨在以速度和效率处理从小型到非常大的项目。

    Git

    Git

    当与一个大型的分布式团队一起工作时,它尤其有用。你最不想遇到的情况是,在你的WordPress安装中,你的functions.php文件有多个版本,所有的名字都略有不同,因为有很多人在同时进行修改。

    Git vs. GitHub

    Git是一个版本控制系统,是一个管理源代码历史的工具。GitHub是一家为使用Git的软件开发项目提供托管服务的公司。

    它们是两种不同的东西,但大多数人使用 “Git “一词来指代Git和GitHub

    安排自动备份

    WordPress开发中最重要的一个方面是备份。备份是至关重要的,因为它们允许你在出错时恢复你的网站。

    有很多方法可以实现自动备份,但最简单的方法之一是使用WordPress的备份插件。有许多伟大的备份插件,但我们推荐使用宝塔的自动备份计划。

    宝塔的自动备份计划任务

    宝塔的自动备份计划任务

    这个插件将每天自动创建你的WordPress网站的备份,并将其存储在一个外部服务器上。

    充分利用Linting的优势

    Linting是检查代码是否有错误的过程。这对WordPress的开发很有价值,因为它可以帮助你找到并修复你的代码中的错误。

    Sublime Text

    Sublime Text

    许多代码编辑器会自动做到这一点,但如果你想确定你的编辑器提供这一功能,可以考虑使用以
    下代码和文本编辑器之一。

    • Sublime Text:这个代码编辑器有很多功能,包括提示。
    • Atom:这个代码编辑器也有内置的打码功能。
    • Vim:这个文本编辑器也提供了提示功能以及许多其他功能。
    • Visual Studio Code:这个代码编辑器默认提供提示功能
    • PHPStorm:这是一个付费的开发环境,它提供了提示功能

    使用代码生成器

    代码生成器是一个可以为你自动生成代码的工具。这对WordPress的开发很有价值,因为它可以节省你的时间并帮助你避免错误。

    GenerateWP

    GenerateWP

    有许多代码生成器可用,但一些最流行的包括:

    • GenerateWP: 这个代码生成器可以为自定义帖子类型、分类法、元框等生成代码。
    • Hasty: 这个代码生成器可以为自定义帖子类型、分类法和字段生成代码
    • Nimbus Themes Code Generator: 这个代码生成器可以为自定义帖子类型、分类法和字段生成代码。

    使用WP-CLI

    WP-CLI是一个WordPress的命令行界面。这对WordPress的开发很有价值,因为它允许你从命令行管理你的WordPress网站。

    当您需要做一些重复性的或需要很多步骤的任务时,这尤其有用。例如,WP-CLI可以用来安装WordPress,创建文章和页面,安装插件和主题,以及更多。当您需要一次对多个网站进行修改时,它也很有帮助。

    使用一个WordPress开发框架

    WordPress开发框架是一个可以帮助你简化工作流程的工具。这对WordPress开发很有价值,因为它可以节省你的时间并帮助你避免错误。

    Bootstrap

    Bootstrap

    有许多WordPress开发框架,但一些最流行的框架包括:

    • Genesis: 这个来自StudioPress的框架是为了帮助你更快地建立WordPress网站。
    • Underscores: 这个来自Automattic的框架是为了帮助你快速开始开发WordPress主题
    • Foundation: 这个来自Zurb的框架旨在帮助你创建响应式的WordPress网站。
    • Bootstrap: 这个来自Twitter的框架是为WordPress网站创建响应式设计的一个超级有用的方法。

    使用任务运行器

    任务运行器是一个可以自动化任务的工具。这对WordPress开发很有价值,因为它可以节省你的时间并帮助你避免错误。它还允许你同时运行多个任务。

    Gulp

    Gulp

    有许多任务运行器可供选择,但一些最受欢迎的包括:

    • Gulp: 这个任务运行器可用于自动化任务,如CSS预处理、JavaScript刷新等。
    • Grunt: Grunt是一个Javascript任务运行器,它可以帮助你实现许多重复性任务的自动化。
    • Webpack: 这个任务运行器可用于自动化任务,如捆绑JavaScript文件等。

    立即熟悉Vue.js或React

    尽管你可能不会马上使用Vue.js或React,但现在熟悉这些框架很重要。这对WordPress的开发很有价值,因为随着时间的推移,它们正变得越来越流行,被使用得越来越多。

    Vue.js是一个JavaScript框架,允许你创建反应式用户界面。React是一个用于构建用户界面的JavaScript库。

    Vue.js和React都是WordPress开发的热门选择,因为它们速度快、重量轻、易于使用,是将WordPress变成无头CMS的关键。

    为什么花时间在WordPress开发流程规划上是至关重要的

    WordPress网站是复杂的,在开始任何项目之前,有一个良好的计划的工作流程是很重要的。通过花时间来计划你的工作流程,你可以节省时间并避免接下来的潜在问题。

    规划你的WordPress工作流程有很多好处。

    • 你可以通过了解需要做什么来节省时间。你可以通过提前
    • 计划来避免潜在的问题。
    • 你可以确保所有必要的任务都完成。你可以确保你的工作流程是高效和有效的。
    • 在将项目移交给合作者或客户时,你可以防止出现问题花时间在WordPress工作流程规划上是至关重要的,因为它可以节省你的时间并帮助你避免潜在的问题。

    通过花时间规划你的工作流程,你可以确保所有必要的任务都得到完成,确保你的工作流程是高效和有效的。

    理想的WordPress开发流程

    有许多方法来处理WordPress的工作流程,但有一些基本步骤应该包括在你的开发过程中。

    Step 1: 设置一个本地开发环境

    任何WordPress工作流程的第一步应该是建立一个本地开发环境。这很重要,因为它允许你在离线情况下在你的WordPress网站上工作,这可以节省时间和防止错误。

    设置本地开发环境的方法有很多,只是取决于你喜欢使用什么设置。

    通过一个完整的WordPress开发环境,并可一键推送至上线。

    你也可以同时在多个项目上工作,并在上线前合并变化。它还内置了A/B测试、插件兼容性测试和资源密集型测试,以帮助进一步确保你的构建结构合理。

    Step 2: 设置版本控制

    任何WordPress工作流程的第二步应该是设置版本控制。这很重要,因为它允许你跟踪你的代码的变化,并在必要时恢复到以前的版本。

    要做到这一点,你可以使用像Git这样的工具。这个过程看起来像下面这样

    1. 在GitHub上创建一个存储库

    要在GitHub上创建一个仓库,你可以使用以下步骤:

    1. 登录你的GitHub账户,点击右上角的+号。
    2. 从下拉菜单中选择New repository.
    3. 为你的资源库输入一个名称和描述,然后点击Create repository.

    在GitHub上创建一个仓库

    在GitHub上创建一个仓库

    2. 克隆版本库到你的本地开发环境

    具体步骤如下:

    1. 在你的仓库的GitHub页面,点击Clone or download按钮。
    2. Clone with HTTPs部分, 复制你的版本库的URL。
    3. 在你的开发环境中,打开终端,切换到你想克隆版本库的目录。
    4. 键入以下命令,替换你从Github复制的URL:
    git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git
    git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git
    git clone https://github.com/YOUR_USERNAME/YOUR_REPOSITORY.git

    这将克隆你的版本库到你的本地开发环境。

    3. 添加文件和提交修改

    1. 把你想用 Git 追踪的文件添加到你电脑上的仓库目录。
    2. 键入git add,后面跟着文件名,或者用git add . 来添加目录中的所有文件。
    3. 输入git commit -m,后面跟一个描述你所做修改的信息。
    4. 要把你的改动推送到Github,输入git push

    现在你可以继续在你的电脑上对文件进行修改,并把它们推送到 GitHub。当你想从Github获取最新版本的文件时,你可以使用git pull命令。

    如果你不使用GitHub,你也可以以类似的方式使用Bitbucket。

    Step 3: 本地开发

    在你建立了你的本地开发环境和版本控制之后,是时候开始在本地离线开发你的WordPress网站了。

    在本地开发时,你可以先在你的暂存网站上测试变化,然后再把它们推送到网上。这很重要,因为它允许你在影响到你的真实网站之前抓住任何错误或漏洞。

    Step 4: 利用WP-CLI

    WP-CLI是一个WordPress的命令行界面,允许您从终端管理您的WordPress网站。这对创建和管理用户、安装和更新插件等任务很有用。

    要安装WP-CLI,请遵循以下步骤:

    1. 下载WP-CLI phar文件。
    2. 将该文件移到你的PATH中的一个目录(例如,/usr/local/bin)。
    3. 将该文件重命名为wp
    4. 使该文件可执行(例如,chmod +x /usr/local/bin/wp)。
    5. 通过运行wp -version测试WP-CI是否已经安装

    从那里,您可以使用WP-CLI从命令行管理您的WordPress网站。关于命令的完整列表,您可以查看我们的WP-CLI v2深度指南

    Step 5: 用Gulp自动化你的工作流程

    Gulp是一个任务运行器,它允许你自动完成一些任务,如最小化CSS和JavaScript文件,编译Sass文件,以及更多。

    要使用Gulp,你首先需要在你的系统上全面安装它。要做到这一点,你需要Node.js、npm和Gulp。在Node.js中运行以下命令

    npm install gulp-cli -g
    npm install gulp-cli -g
    npm install gulp-cli -g

    一旦Gulp安装完毕,你可以在你的项目根部创建一个gulpfile.js文件。这个文件包含你的Gulp任务的代码。

    例如,下面的gulpfile.js文件包含一个用于最小化CSS文件的任务:

    var gulp = require(‘gulp’);
    var cleanCSS = require(‘gulp-clean-css’);
    gulp.task(‘minify-css’, function() {
    return gulp.src(‘src/*.css’)
    .pipe(cleanCSS({compatibility: ‘ie8’}))
    .pipe(gulp.dest(‘dist’));
    });
    var gulp = require(‘gulp’);
    var cleanCSS = require(‘gulp-clean-css’);
    gulp.task(‘minify-css’, function() {
    return gulp.src(‘src/*.css’)
    .pipe(cleanCSS({compatibility: ‘ie8’}))
    .pipe(gulp.dest(‘dist’));
    });
    var gulp = require('gulp');
    var cleanCSS = require('gulp-clean-css');
    gulp.task('minify-css', function() {
    return gulp.src('src/*.css')
    .pipe(cleanCSS({compatibility: 'ie8'}))
    .pipe(gulp.dest('dist'));
    });

    要运行这项任务,你可以使用以下命令:

    gulp minify-css
    gulp minify-css
    gulp minify-css

    Step 6: 使用Linting

    提示工具是静态代码分析工具,帮助你发现代码中的错误。对于我们这里的目的,我们使用Atom.io和以下的提示包

    • atom-beautify
    • atom-ternjs
    • linter
    • linter-eslint
    • linter-php
    • linter-sass-lint

    Atom.io

    Atom.io

    在你的终端中,导航到你想要lint的目录,运行以下命令:

    find . -name “*.js” -o -name “*.scss” | xargs eslint –fix
    find . -name “*.js” -o -name “*.scss” | xargs eslint –fix
    find . -name "*.js" -o -name "*.scss" | xargs eslint --fix

    这将使你的项目中所有的JavaScript和Sass文件都得到提示。

    如果你想对一个特定的文件进行lint,你可以运行以下命令:

    eslint –fix file-name.js
    eslint –fix file-name.js
    eslint --fix file-name.js

    将file-name.js替换为你要提示的文件的名称。

    Step 7: 使用CSS预处理程序

    CSS预处理器是一种工具,它允许你用不同的语言编写CSS,然后将其编译成CSS。两个最流行的CSS预处理器是Sass和Less。

    在本教程中,我们将使用Sass。要使用Sass,你首先需要安装Sass命令行工具。要做到这一点,请运行以下命令。

    gem install sass
    gem install sass
    gem install sass

    一旦安装了Sass,你可以使用以下命令将Sass文件编译成CSS。

    sass input.scss output.css
    sass input.scss output.css
    sass input.scss output.css

    用你的Sass文件的名称替换input.scss,用你想创建的CSS文件的名称替换output.css。

    如果你想观察你的Sass文件的变化,并自动将其编译成CSS,你可以使用以下命令:

    sass –watch input.scss:output.css
    sass –watch input.scss:output.css
    sass --watch input.scss:output.css

    Step 8: 使用部署插件

    部署插件是一种工具,它允许你轻松地将你的WordPress网站从本地开发环境部署到实时服务器上。

    有许多不同的工具可以用于这个目的,但我们推荐使用WP Pusher。WP Pusher是一个免费的部署插件,你可以在你的WordPress网站上使用

    WP Pusher

    WP Pusher

    要安装WP Pusher,首先,从WP Pusher网站下载ZIP文件。然后,登录你的WordPress网站,进入插件>安装插件。点击上传插件按钮,选择你刚刚下载的ZIP文件。一旦插件被安装和激活,你可以进入设置>WP Pusher来配置它。

    一旦WP Pusher配置好了,你就可以把WordPress插件和主题部署到你的实时服务器上,而完全不需要与FTP界面互动,也不需要搞乱你的WordPress数据库。

    Step 9: 利用WordPress Rest API

    WordPress REST API是一个强大的工具,它允许你从WordPress管理界面之外与你的WordPress网站互动。

    WordPress REST API可以用来为你的WordPress网站建立自定义解决方案。例如,你可以使用WordPress REST API为你的WordPress建立一个移动应用程序。网站或创建一个自定义的仪表板。

    要开始使用WordPress REST API,你需要通过WordPress命令行界面与它对接。我们最近发布了一个关于如何设置WordPress REST API的教程,可以指导你完成每个步骤。

    Step 10: 创建并遵循样式指南

    样式指南是一套用于编码和设计WordPress网站的指南。风格指南有助于确保你的代码是一致的和容易阅读的。

    有许多不同的样式指南,你可以在你的WordPress项目中使用。我们建议使用WordPress编码标准作为一个起点。然而,随着时间的推移,你可能会做许多修改和补充

    WordPress编码标准

    官方WordPress Codex的WordPress编码标准

    你所创建的任何风格指南都有可能一直在变化。但重要的一点是,它为你团队中的所有开发人员提供了一个确定的步骤集合和遵循的准则。

    基本上,你的风格指南应该是你的WordPress工作流程的书面形式。

    Step 11: 上线你的网站

    一旦你完成了上面所有的步骤,你的WordPress网站就可以被推送上线了。如果你使用像WP Pusher这样的部署插件,这个过程就像把你的代码推送到你的远程Git仓库一样简单。

    如果你没有使用部署插件或Git,你可以简单地从你的本地开发环境导出你的WordPress数据库,并将其导入你的实时服务器。你可以通过在你的WordPress管理仪表板上的 “工具”>”导出 “来做到这一点。

    然后,从导出选项中选择所有内容,点击下载导出文件按钮。一旦你有了你的数据库文件,你就可以通过在你的WordPress管理仪表板上的 “工具”>”导入 “把它导入到你的实时服务器。选择你刚刚导出的数据库文件,点击上传文件和导入按钮。

    你也可以使用FileZilla这样的FTP客户端将你的WordPress文件从你的本地开发环境手动转移到你的实时服务器。只需使用FTP连接到你的实时服务器,然后把你的WordPress文件拖放到
    public_html目录中。

    一旦你推送了你的WordPress网站,你可以花时间来测试一切,并确保一切都在正常工作。

    小结

    正如你所看到的,正确地创建一个WordPress开发工作流程有很多事情要做。但是,遵循这些步骤将有助于确保你的WordPress网站有条不紊,易于管理,并且运行顺畅。

  • 开发者测试调试工具Xdebug安装及集成使用教程

    开发者测试调试工具Xdebug安装及集成使用教程

    正如任何一个开发者可以证明的那样,代码在初稿之后永远不可能为生产做好准备。开发过程中的一个关键部分是调试–删除或改变代码中所有不工作的部分。

    PHP的Xdebug扩展是一种流行的方法,可以根除并摧毁你代码中的所有bug。

    Xdebug的一个伟大方面是它的灵活性。无论你喜欢哪种框架或开发环境,你都能找到适合你工作流程的Xdebug版本。从这里开始,掌握这个工具不会花很长时间。

    本教程将深入研究Xdebug,包括安装过程、将其集成到你的设置中,以及一般使用方法。

    首先,让我们给你更多关于Xdebug是什么和它做什么的背景。

    1. Xdebug介绍
    2. 为什么要使用Xdebug?
    3. 如何开启PHP错误日志
    4. 如何使用Xdebug
    5. 结合PhpStorm使用Xdebug
    6. 命令小贴士

    Xdebug介绍

    Xdebug是最流行的调试PHP代码的扩展之一。你将在你选择的环境中安装它,它充当一个 “步骤调试器”。

    xdebug

    Xdebug logo

    简而言之,这使你能够逐行处理你的代码,这样你就可以逐步查看代码在你的程序中是如何行动和互动的,以及调查其输出。从那里,你可以根据你的需要进行修改。

    不过,Xdebug可以做得更多。

    • 你可以使用一套指标和可视化的方法来分析你的代码的性能。
    • 当你运行PHP单元测试时,你可以看到你运行和执行的代码套件。
    • Xdebug包括 “跟踪 “功能,它将把每个函数的调用写到磁盘上。这将包括参数、变量赋值和返回值。
    • Xdebug还对标准的PHP错误报告做了改进。我们将在后面介绍更多这方面的内容。

    鉴于这些特性,有很多方法可以在你的工作流程中使用Xdebug(以及任何类似的调试器)。我们将在下一节中介绍这些。

    为什么要使用Xdebug?

    许多开发者不会有一个专门的调试工作流程,使用第三方工具和扩展。这是因为 PHP 包含了它自己的基本错误记录。你会使用as error_logvar_dumpprint等命令来查看变量和函数调用的结果。

    例如,有很多片段你可以重新用于WordPress的开发–Stack Overflow上有很多这样的片段

    function log_me($message) {
    if ( WP_DEBUG === true ) {
    if ( is_array($message) || is_object($message) ) {
    error_log( print_r($message, true) );
    } else {
    error_log( $message );
    }
    }
    }
    function log_me($message) {
    if ( WP_DEBUG === true ) {
    if ( is_array($message) || is_object($message) ) {
    error_log( print_r($message, true) );
    } else {
    error_log( $message );
    }
    }
    }
    function log_me($message) {
    if ( WP_DEBUG === true ) {
    if ( is_array($message) || is_object($message) ) {
    error_log( print_r($message, true) );
    } else {
    error_log( $message );
    }
    }
    }

    然而,这种方法也有一些重要的缺点。

    • 你首先必须确保你为你所使用的平台启用错误日志。在这种情况下,你要启用 WP_DEBUG (稍后会有更多介绍)。
    • 这个 “转储 “调试的例子比步骤调试提供的调查范围要小。在这里,你只能输出你定义的东西。

    后一点需要很多手工操作,尤其是当你的日常工作不是系统管理员的时候。例如,如果你想调试一个代码块,你可能会根据你定义的一个变量来添加你的代码段。然而,它可能不是问题的根源,甚至不能说明正在发生什么。

    相反,像Xdebug这样的工具可以发挥其魔力,提供更大的范围。

    • 你可以在执行过程中的不同点 “破坏 “你的代码,以查看实时发生的情况。
    • 有无数的指标、可视化、分支等等来帮助你确定你的代码在做什么以及它是如何反应的。
    • 有时,你甚至可以在调试过程中即时改变数值。这提供了巨大的价值,甚至对于工作良好的代码套件也是如此。你基本上可以在任何时候进行手动单元测试。
    • 因为你使用断点来标记要调试的区域,所以你不需要在你的代码中使用片段工作。这可以使你的代码更干净,并减少未来问题的数量。

    总的来说,使用像Xdebug这样的工具是一个主动的决定,而不是一个被动的决定。你可以把步骤调试作为核心开发过程的一部分,就像实施单元测试作为测试驱动开发(TDD)的一部分。

    如何开启PHP错误日志

    虽然你可以在没有具体错误的情况下调试你的代码,但在没有打开Xdebug的情况下知道问题是否发生往往是很好的。这给你一个探索的起点。这不是严格意义上的必要条件,但可以成为你的链条中的一个有用部分。

    要报告每一个出现的错误,你需要在相关的PHP文件的顶部添加一行。

    error_reporting(E_ALL);
    error_reporting(E_ALL);
    error_reporting(E_ALL);

    这是一个包罗万象的命令,你可以用ini_set函数实现同样的目的。

    ini_set(‘error_reporting’, E_ALL);
    ini_set(‘error_reporting’, E_ALL);
    ini_set('error_reporting', E_ALL);

    这让你可以逐个项目地改变php.ini文件中的设置。虽然你可以进入这个文件并进行手动更改,但通常使用 ini_set 来更改特定的参数是一个更好的主意:

    ini_set(‘display_errors’, ‘1’);
    ini_set(‘display_errors’, ‘1’);
    ini_set('display_errors', '1');

    一旦你把主动错误报告设置成你喜欢的样子,你就可以开始用Xdebug工作。

    如何使用Xdebug

    在接下来的几个部分,我们将向你展示如何使用Xdebug,包括你需要设置的步骤。虽然我们不能涵盖每个工具的各个方面,但这个快速入门指南会让你快速入门。

    不过,首先,你需要安装Xdebug。让我们来看看如何做到这一点。

    1. 为你的操作系统(OS)安装Xdebug

    因为Xdebug可以适应任何数量的设置,所以每个设置的具体过程都会略有不同。在操作系统层面上,有一些区别。

    • Windows:这是一个有点复杂的设置过程,包括使用现有的 PHP 文件和安装向导,然后下载适合你的系统的版本。
    • Linux:这里的方法可以说是最直接的了。你可以使用包管理器来安装Xdebug,或者PHP扩展社区库(PECL)
    • Mac:这个方法也很简单。一旦你安装了PECL,你可以在终端实例中运行 pecl install xdebug 。你还需要在你的系统上安装XCode命令行工具和PHP。

    然而,大多数用户不会想坚持使用系统级的Xdebug实例。相反,你会想把它整合到你自己的开发环境中。

    2. 将Xdebug集成到你的开发环境中

    一旦你为你的操作系统安装了Xdebug,你应该把它连接到你的环境中。

    这里有很多支持的系统和工具,我们无法一一介绍。稍后,我们将为你提供PhpStorm的说明。即便如此,还有很多其他流行的环境可以选择。下面是我们的一些顶级推荐。

    Variing Vagrant Vagrants(VVV)

    VVV是Make WordPress网站上的命名环境之一。

    Varying Vagrant Vagrants标志

    Varying Vagrant Vagrants标志

    好消息是,VVV已经包括了Xdebug的一个版本,但你需要激活它。你可以在一个终端窗口中使用安全壳(SSH)来完成这个任务。

    vagrant ssh -c “switch_php_debugmod xdebug”
    vagrant ssh -c “switch_php_debugmod xdebug”
    vagrant ssh -c "switch_php_debugmod xdebug"

    不过,这对性能有一点影响,如果你提供你的网站,你将需要把这个选项重新打开。

    Laravel Valet

    对于一些用户来说, Laravel的Valet代表了一个近乎完美的网络开发环境. 更棒的是, 你可以将Xdebug与之整合.

    要做到这一点, 你需要为调试器创建一个配置文件. 你可以在命令行中使用 php --ini 找到你自己的路径, 这将返回一些不同的文件路径:

    终端机显示配置文件的路径列表

    终端机显示配置文件的路径列表

    接下来,在其他.ini文件的路径上创建一个新的xdebug.ini文件。在我们的例子中,它位于/opt/homebrew/etc/php/7.4/conf.d

    一旦你打开这个新文件,也要打开加载的配置文件(你的主php.ini文件)的路径。两者都打开后,在底部添加以下内容。

    • php.ini: zend_extension="xdebug.so"
    • xdebug.ini: xdebug.mode=debug

    一旦你保存了你的改动,从终端运行 valet restart ,然后在你的网站的一个文件中加入 phpinfo(); exit; 。你想通过在浏览器中快速加载页面来检查这是否有效。

    PHP信息界面

    PHP信息界面

    注意你可能需要用 sudo brew services restart php 来重启PHP,同时用 php --info | grep xdebug来检查你的系统安装Xdebug是否正确。你会注意到输出中的Xdebug专用行:

    检查你的系统安装Xdebug是否正确

    从这里,你可以寻求将Xdebug纳入你选择的编码编辑器中。

    XAMPP

    与Valet一样,XAMPP的过程也有几个部分。然而,Windows和macOS版本有两个不同的过程。

    首先安装XAMPP,然后快速检查你的系统中是否存在php_xdebug.dll文件(Windows)或xdebug.so文件(macOS)。

    显示XAMPP文件测试的终端窗口

    显示XAMPP文件测试的终端窗口

    如果该文件存在,就可以继续配置了。否则,首先需要下载适合Windows的二进制文件–为你喜欢的PHP版本下载一个64位的文件–或者如果你用的是Mac,则需要安装更多的依赖项。

    对于 Windows,重命名 DLL 文件 php_xdebug.dll,然后把它移到 xamppphpext 文件路径中。接下来,在你喜欢的代码编辑器中打开xamppphpphp.ini文件并添加以下内容:

    output_buffering = Off
    output_buffering = Off
    output_buffering = Off

    在 [XDebug] 部分,添加以下三行。

    zend_extension=xdebug
    xdebug.mode=debug
    xdebug.start_with_request=trigger
    zend_extension=xdebug
    xdebug.mode=debug
    xdebug.start_with_request=trigger
    zend_extension=xdebug
    xdebug.mode=debug
    xdebug.start_with_request=trigger

    一旦你保存了你的更改,重新启动Apache并测试Xdebug。

    对于Mac,你要确保你在终端实例中使用 xcode-select --install 来安装Xcode命令行工具。之后,有三个软件包你要用Homebrew来安装。

    brew install autoconf automake libtool
    brew install autoconf automake libtool
    brew install autoconf automake libtool

    在某些情况下,你还需要重新安装XAMPP以获得核心程序和 “开发者文件”。你应该可以只重新安装这些文件,但你要先对你现有的设置进行备份。

    接下来,在你的系统上导航到Xdebug源文件夹的下载,解压TGZ文件。在一个终端窗口中,导航到该目录并运行以下程序:

    phpize
    pecl install xdebug
    phpize
    pecl install xdebug
    phpize
    pecl install xdebug

    注意,你可能也需要在这里使用 sudo 。从这里,你可以编辑XAMPP的php.ini文件。对于大多数macOS安装,你可以在/Applications/XAMPP/xamppfiles/etc/php.ini中找到它。在这个目录中,你也会找到你的xdebug.so文件的路径–记下它并使用它来代替本片段中的文件路径占位符。

    [xdebug]
    zend_extension=/path/to/xdebug.so
    xdebug.mode=develop,degug
    xdebug.start_with_request=yes
    [xdebug]
    zend_extension=/path/to/xdebug.so
    xdebug.mode=develop,degug
    xdebug.start_with_request=yes
    [xdebug]
    zend_extension=/path/to/xdebug.so
    xdebug.mode=develop,degug
    xdebug.start_with_request=yes

    为了测试这是否有效,在htdocs XAMPP主目录下创建一个新的xdebug_info.php文件。在里面,添加以下内容:

    <?php
    xdebug_info();
    <?php
    xdebug_info();
    <?php
    xdebug_info();

    …然后刷新Apache并在浏览器中测试Xdebug。

    结合PhpStorm使用Xdebug

    一旦你通过操作系统和你的开发环境安装了Xdebug,你还需要查看调试器本身。你将通过你选择的代码编辑器或集成开发环境(IDE)来做这件事。就像你的环境一样,有很多可供选择的,每一个都可能有不同的方法。

    这就是说,许多开发人员选择使用JetBrains的PhpStorm。事实上,PhpStorm提供了 “感知WordPress的协助“–而且它也是一个受欢迎的选择,因为有许多其他原因。

    PhpStorm界面

    PhpStorm界面

    JetBrains 网站包括连接 Xdebug 和 PhpStorm 的完整说明,但我们将在此回顾一下。

    首先,在Preferences窗格中导航到Languages & Frameworks > PHP页面。在这里,打开CLI Interpreter下拉字段旁边的More Items串菜单:

    CLI解释器

    在PhpStorm中选择一个CLI解释器

    这将显示一些关于你的 PHP 版本和解释器的进一步细节。如果你点击Configuration file选项旁边的More items省略号,你会看到php.ini文件的完整路径。

    在PhpStorm中修改PHP配置

    在PhpStorm中修改PHP配置

    接下来你将使用这个PHP文件来继续设置过程

    在php.ini文件中工作

    这里的第一个任务是编辑出任何影响 Xdebug 如何与 PhpStorm 一起工作的行。

    php.ini 文件中,寻找以下几行,并将其删除或注释掉。

    zend_extension=<path_to_zend_debugger>
    zend_extension=<path_to_zend_optimizer>
    zend_extension=<path_to_zend_debugger>
    zend_extension=<path_to_zend_optimizer>
    zend_extension=<path_to_zend_debugger>
    zend_extension=<path_to_zend_optimizer>

    这些行不会在所有情况下出现,所以如果你没有看到它们,不要惊慌。

    接下来,在文件中添加以下内容。

    [xdebug]
    zend_extension=“xdebug.so”
    xdebug.mode
  • 实例说明如何通过Python来连接管理WordPress

    实例说明如何通过Python来连接管理WordPress

    WordPress已经成为最常用的内容管理系统(CMS),这在很大程度上是由于它的应用编程接口(API)。WordPress的REST API使WordPress能够与其他用各种语言编写的应用程序 “对话”–包括Python。

    Python是一种可扩展的编程语言,具有多种用途和人类可读的语法,使它成为远程管理WordPress内容的强大工具。

    下面是一些WordPress REST API对你的应用程序的用例,以及你如何使用Python来支持它们。

    • 使用预定义模板,使你的应用程序能够快速地将原始数据转化为带有解释的格式化文章。
    • 在Django和Python上建立一个后台应用程序,在每次特定对象的折扣或销售事件发生时向你的客户显示限时优惠。
    • 整合Python脚本,在你的WordPress网站内运行

    本教程将帮助你创建一个简单的Python控制台应用程序,与WordPress REST API进行通信并执行操作。完整的项目代码也是可用的。

    1. 安装和配置WordPress
    2. 如何从Python中控制WordPress
    3. 在代码中获取文章
    4. 用代码创建文章
    5. 更新代码中的文章
    6. 删除代码中的文章

    安装和配置WordPress

    首先,让我们在你的开发机器上本地安装和运行一个WordPress网站。这是开始使用WordPress的一个很好的方法,因为你不需要创建一个账户或购买一个虚拟主机的域名。

    在本地安装WordPress之前,需要在你的电脑上运行一些组件,包括Apache网络服务器、本地数据库和编写WordPress的PHP语言。

    幸运的是,我们可以使用DevKinsta,一个免费的本地WordPress开发套件,可用于所有主要的操作系统(你不需要成为Kinsta的客户来使用它)。

    DevKinsta可用于Windows、Mac和Linux,并在你的本地机器上安装WordPress和它的所有依赖项。

    在安装DevKinsta之前,你必须在本地运行Docker,所以如果你还没有下载并安装Docker引擎。

    安装Docker Desktop后,你可以自动下载适合你的操作系统的软件包。

    DevKinsta安装页面

    DevKinsta安装页面

    当你运行DevKinsta安装程序时,Docker立即开始初始化。

    DevKinsta的创建新网站菜单

    DevKinsta的创建新网站菜单

    现在,DevKinsta安装程序要求你创建WordPress管理账户的凭据。

    DevKinsta显示新WordPress网站表格

    DevKinsta显示新WordPress网站表格

    一旦安装,DevKinsta就是一个独立的应用程序。现在你可以同时访问WordPress网站(通过Open Site按钮)和WordPress管理仪表板(WP Admin按钮)。

    DevKinsta的网站信息面板

    DevKinsta的网站信息面板

    接下来,你需要为你的网站启用SSL和HTTPS。这可以通过SSL证书提高你网站的安全性。

    DevKinsta的 "SSL和HTTPS "选项

    DevKinsta的 “SSL和HTTPS “选项

    现在进入DevKinsta应用程序,点击Open site按钮。一个新的浏览器标签将显示你的WordPress网站的主页。

    WordPress主页

    WordPress主页

    这是你的WordPress博客,你可以在这里开始写作。但是为了使Python能够访问和使用WordPress REST API,我们必须首先配置WordPress Admin。

    现在点击DevKinsta应用程序上的WP Admin按钮,然后提供你的用户和密码以访问WordPress仪表板。

    WordPress登录表单

    WordPress登录表单

    一旦你登录了,你会看到WordPress仪表盘

    WordPress仪表板页面

    WordPress仪表板页面

    WordPress使用cookie认证作为它的标准方法。但是,如果你想用REST API来控制它,你必须用一种允许访问WordPress REST API的技术来认证。

    为此,你将使用应用密码。这些是WordPress生成的24个字符的长字符串,并与有权限管理你的网站的用户配置文件联系起来。

    要使用应用密码,请点击仪表板上的插件菜单,然后搜索同名的插件。然后安装并激活应用程序密码插件。

    WordPress的应用密码插件

    WordPress的应用密码插件

    要开始创建你的应用程序密码,首先要展开Users菜单,点击All Users

    扩展的用户菜单

    扩展的用户菜单

    现在,点击你的管理员用户名下面的编辑。

    WP-Admin WordPress界面

    WP-Admin WordPress界面

    向下滚动 “编辑用户 “页面,找到 “应用密码 “部分。在这里,为应用程序密码提供一个名称,以后你将用它来验证你的Python应用程序的请求和消费REST API。

    申请密码页

    申请密码页

    点击Add New Application Password,这样WordPress就可以为你生成一个随机的24个字符的密码。

    新的申请密码页面

    新的申请密码页面

    接下来,复制这个密码并将其保存在一个安全的地方,以便以后使用。记住,一旦你关闭这个页面,你将无法找回这个密码。

    最后,你必须配置permalinks。WordPress允许你为你的permalinks和archives创建一个自定义的URL结构。让我们改变它,使一个WordPress的文章标题,例如,”你的第一个WordPress网站”,可以通过直观的URL https://your-website.local:port/your-first-wordpress-website/。这种方法带来了一些好处,包括改善可用性和美观性。

    要配置固定链接,展开设置部分并点击固定链接菜单。在这里,将常用设置改为文章名称。

    固定链接设置

    使用Post name结构来设置固定链接结构也是必要的,因为它将允许我们在以后的Python代码中使用JSON格式来检索文章。否则,将抛出一个JSON解码错误。

    如何从Python中控制WordPress

    WordPress是用PHP编写的,但它有一个REST API,使其他编程语言、网站和应用程序能够消费其内容。在REST架构中暴露WordPress的内容,使其以JSON格式提供。因此,其他服务可以与WordPress集成,执行创建、读取、更新和删除(CRUD)操作,而不需要安装本地的WordPress。

    接下来,你将建立一个简单的Python应用程序,看看你如何使用WordPress REST API来创建、检索、更新和删除文章。

    为你的新的简单Python项目创建一个新的目录,并命名为 PythonWordPress之类的。

    ../PythonWordPress
    ../PythonWordPress
    ../PythonWordPress

    现在,你将为你的项目创建一个虚拟环境,让它保持一套独立的已安装的 Python 包,将它们与你的系统目录隔离,避免版本冲突。通过执行venv 命令来创建一个虚拟环境。

    python3 -m venv .venv
    python3 -m venv .venv
    python3 -m venv .venv

    现在,运行一个命令来激活.venv虚拟环境。这个命令因操作系统而异。

    • Windows: .venvScriptsactivate
    • Mac/Linux: .venv/bin/activate

    接下来,存储与你的WordPress帐户相关的配置。为了将应用程序的配置与你的Python代码分开,在你的项目目录下创建一个.env文件,并将这些环境变量添加到该文件中。

    WEBSITE_URL=“<>”
    API_USERNAME=“<>”
    API_PASSWORD=“<>”
    WEBSITE_URL=”<>”

    API_USERNAME=”<>”

    API_PASSWORD=”<>”

    WEBSITE_URL="<>"
    
    API_USERNAME="<>"
    
    API_PASSWORD="<>"

    幸运的是,从Python应用中读取上述数据很容易。你可以安装Python-dotenv包,这样你的应用程序就可以从.env文件中读取配置。

    pip install python-dotenv
    pip install python-dotenv
    pip install python-dotenv

    然后,安装 aiohttp,一个用于 Python 的异步 HTTP 客户端/服务器。

    pip install aiohttp
    pip install aiohttp
    pip install aiohttp

    现在添加一个名为app.py的文件,代码如下。

    import asyncio
    menu_options = {
    1: ‘List Posts’,
    2: ‘Retrieve a Post’
    }
    def print_menu():
    for key in menu_options.keys():
    print (key, ‘–‘, menu_options[key] )
    async def main():
    while(True):
    print_menu()
    option = input_number(‘Enter your choice: ‘)
    #Check what choice was entered and act accordingly
    if option == 1:
    print(‘Listing posts…’)
    elif option == 2:
    print(‘Retrieving a post…’)
    else:
    print(‘Invalid option. Please enter a number between 1 and 5.’)
    def input_number(prompt):
    while True:
    try:
    value = int(input(prompt))
    except ValueError:
    print(‘Wrong input. Please enter a number …’)
    continue
    if value < 0:
    print(“Sorry, your response must not be negative.”)
    else:
    break
    return value
    def input_text(prompt):
    while True:
    text = input(prompt)
    if len(text) == 0:
    print(“Text is required.”)
    continue
    else:
    break
  • 通过Docker部署运行MariaDB数据库

    通过Docker部署运行MariaDB数据库

    MariaDB是一个免费的数据库服务器,使用结构化查询语言(SQL)提供数据访问。它提供了密码、基于角色的访问控制等安全功能来保护你的数据。

    为了部署MariaDB并向用户授予数据访问权,你需要托管数据库服务器。你可以选择云供应商或使用托管或共享主机服务。

    本文将教你如何使用Docker容器运行MariaDB,配置和运行数据库服务器,并将其连接到WordPress网站。

    1. 什么是Docker?
    2. 如何使用Docker部署MariaDB
    3. 在你的WordPress网站上添加一个新的文章
    4. 通过DevKinsta管理MariaDB和Docker

    什么是Docker?

    Docker是一个免费的开发工具,使你能够在一个称为容器的受控环境中运行应用程序。容器有应用程序代码、依赖性和运行应用程序的关键系统工具。这使你能够在整个软件开发生命周期内提供强大的应用程序。

    通常情况下,容器使用你的操作系统作为主机。这意味着主机的内核提供对CPU、内存和文件系统等资源的访问。因此,这不需要像虚拟机那样的传统虚拟化。使用Docker来运行MariaDB实例有几个优点。

    • 它的数字足迹小,保证了系统资源的有效利用。
    • 它是一致的,允许开发人员在生产和测试部署中运行应用程序,只需最小的变化。
    • 它为资源共享提供了一个灵活的机制。
    • 它是可扩展的–你可以在一台主机上运行许多容器。

    如何使用Docker部署MariaDB

    在本节中,你将使用Docker创建容器化环境来运行MariaDB。你将了解到Docker所提供的容器技术。Docker可以在大多数版本的Windows、macOS和Linux发行版上运行。在本教程中,你需要有Windows 10/11、Ubuntu 20.04或macOS X机器来跟随。

    1. 安装Docker

    Docker的最大特点之一是它的可移植性。它使用主机的操作系统,使其成为测试和发布环境的理想选择。本节将教你如何在三个操作系统上安装Docker。

    Ubuntu 20.04

    首先,更新Ubuntu的软件包列表。

    sudo apt-get update
    sudo apt-get update
    sudo apt-get update
    

    然后,允许通过HTTPS访问在线存储库。

    sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
    sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
    sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
    

    添加Docker的GPG密钥

    接下来,添加Docker的GPG密钥

    sudo mkdir -p /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg
    sudo mkdir -p /etc/apt/keyrings

    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg –dearmor -o /etc/apt/keyrings/docker.gpg

    sudo mkdir -p /etc/apt/keyrings
    
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

    现在,添加Docker的存储库。

    echo deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    echo deb [arch=$(dpkg –print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    echo deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    

    然后,更新Ubuntu的软件包以包括Docker的仓库。

    sudo apt-get update
    sudo apt-get update
    sudo apt-get update
    

    最后,安装Docker引擎。

    sudo apt-get install docker-ce
    sudo apt-get install docker-ce
    sudo apt-get install docker-ce
    

    如果你使用的是不同的Linux发行版,如Debian或Fedora,请遵循在Linux中安装Docker的官方文档。

    Windows 10/11

    Docker可以在Windows 10或11上使用Windows Subsystem for Linux版本2(WSL 2)作为后端。使用以下步骤来安装Docker。

    首先,在你的Windows系统上启用虚拟机平台功能。这使你能够安装WSL 2,并在你的Windows机器上安装和运行一个虚拟化的Linux实例。

    接下来,安装WSL

    然后,访问微软商店,下载Ubuntu 20.04。

    最后,下载Docker Desktop for Windows。打开下载的文件,启动安装过程。

    安装完成后,从你的任务栏中搜索 “Docker Desktop “并打开它。

    (注意:你需要使用PowerShell作为你的终端来使用Docker命令。)

    macOS X

    Docker可以通过苹果应用商店在macOS机器上使用。有两种针对英特尔苹果芯片的安装程序可用。

    首先,从上面的一个链接中下载相应的安装程序。然后,双击以打开下载的.dmg文件。

    接下来,将Docker图标拖放到应用程序文件夹中。

    现在,从应用程序文件夹中打开Docker应用程序,按照提示完成配置。

    一旦安装过程完成,双击桌面状态栏中的Docker图标,即可打开它。

    使用默认的终端来运行Docker命令。

    2. 下载MariaDB镜像

    Docker镜像提供了一个命令和配置的集合,以创建一个Docker容器。它负责安装运行一个应用程序所需的一切。你可以从Docker Hub找到MariaDB的官方镜像。

    要从Docker Hub下载MariaDB的镜像,你需要使用 docker pull 命令。

    docker pull mariadb
    docker pull mariadb
    docker pull mariadb
    

    你也可以通过运行以下内容查看已下载的Docker镜像的列表。

    docker images
    docker images
    docker images
    

    这是命令的输出。

    列出Docker镜像

    列出Docker镜像

    3. 创建一个容器

    容器是一个软件单元,具有运行一个进程或程序所需的所有代码、依赖性和系统工具。你将使用之前下载的镜像来创建一个MariaDB容器。

    docker create mariadb –name mariadb-wp -i –t
    docker create mariadb –name mariadb-wp -i –t
    docker create mariadb --name mariadb-wp -i –t
    

    这将创建一个名为 mariadb-wp的MariaDB容器。–i 标志允许一个交互式会话,而–t 选项则创建一个伪终端。官方文档提供了关于所有可用变量的信息。

    4. 运行、暂停和停止容器

    Docker为开发者提供了可配置环境的灵活性。在本节中,我们将用环境变量来配置MariaDB的容器,为你的容器设置特定的系统属性。

    MariaDB有很多变量可以设置,比如数据库名称、密码和数据库用户。关于支持的环境变量的更广泛的列表,请参考Docker的MariaDB的文档

    docker run -d –name mariadb-wp -p 3306:3306 -v ‘/path/on/host/:/var/lib/mysql’ -e “MARIADB_ROOT_PASSWORD=” -e “MARIADB_DATABASE=wordpress” -e “MARIADB_USER=wordpress” -e “MARIADB_PASSWORD=” mariadb
    docker run -d –name mariadb-wp -p 3306:3306 -v ‘/path/on/host/:/var/lib/mysql’ -e “MARIADB_ROOT_PASSWORD=” -e “MARIADB_DATABASE=wordpress” -e “MARIADB_USER=wordpress” -e “MARIADB_PASSWORD=” mariadb
    docker run -d --name mariadb-wp -p 3306:3306 -v '/path/on/host/:/var/lib/mysql' -e "MARIADB_ROOT_PASSWORD=" -e "MARIADB_DATABASE=wordpress" -e "MARIADB_USER=wordpress" -e "MARIADB_PASSWORD=" mariadb
    

    上面的命令配置了MariaDB的根密码、数据库用户和相关密码。然后它在3306端口运行MariaDB。你可以决定用下面的命令来暂停一个容器的应用程序的运行。

    docker pause mariadb-wp
    docker pause mariadb-wp
    docker pause mariadb-wp
    

    最后,你也可以用下面的命令来停止在容器内运行的应用程序。

    docker stop mariadb-wp
    docker stop mariadb-wp
    docker stop mariadb-wp

    5. 将容器化的MariaDB连接到一个WordPress网站上

    现在,我们需要将MariaDB连接到一个外部的WordPress网站。你可以在这里了解更多关于在本地创建一个WordPress网站的信息。

    在WordPress网站的根目录下,在你的代码编辑器中打开wp-config.php文件。找到为数据库定义变量的代码部分,并编辑它,如下图所示。确保你在创建MariaDB容器时使用数据库名称、密码和端口号。

    define(‘DB_NAME’, ‘wordpress’);
    define(‘DB_USER’, ‘wordpress’);
    define(‘DB_PASSWORD‘, ‘‘);
    define(‘DB_HOST‘, ‘http://localhost:3306’);
    define(‘DB_NAME’, ‘wordpress’);

    define(‘DB_USER’, ‘wordpress’);

    define(‘DB_PASSWORD’, ”);

    define(‘DB_HOST’, ‘http://localhost:3306’);

    define('DB_NAME', 'wordpress');
    
    define('DB_USER', 'wordpress’);
    
    define('DB_PASSWORD', '');
    
    define('DB_HOST', 'http://localhost:3306’);

    接下来,你需要将你的WordPress网站的数据库转储导入到容器化的MariaDB中。首先,确保你已经导出了网站的当前数据库。要了解更多,请查看我们的MySQL数据库备份教程

    导出数据库后,在容器内安装数据库转储。

    docker exec -i mariadb-wp sh -c ‘exec mysql -u root -p “$MARIADB_ROOT_PASSWORD” < /some/path/on/your/host/all-databases.sql’
    docker exec -i mariadb-wp sh -c ‘exec mysql -u root -p “$MARIADB_ROOT_PASSWORD” < /some/path/on/your/host/all-databases.sql’
    docker exec -i mariadb-wp sh -c 'exec mysql -u root -p "$MARIADB_ROOT_PASSWORD" < /some/path/on/your/host/all-databases.sql'
    

    docker exec 命令允许开发者在容器内运行shell命令。我们在上面的命令中使用导出的文件将一个数据库导入MariaDB。

    在你的WordPress网站上添加一个新的文章

    我们将使用WordPress管理账户创建一个样本文章来测试这个集成。

    首先,登录WordPress,点击文章>写文章。如下面所示,填写细节,然后点击发布。创建文章后,点击查看文章,查看新添加的文章。

    在WordPress编辑器中添加一个新的文章

    在WordPress编辑器中添加一个新的文章

    这就是它的全部内容!

    通过DevKinsta管理MariaDB和Docker

    Kinsta的免费应用程序DevKinsta使开发者能够有效地创建容器化的WordPress网站。该应用使用Docker来配置PHP版本、数据库服务器和Web服务器。DevKinsta应用支持使用macOS、Windows和Ubuntu/Linux的开发者。

    要开始使用,请在你的本地机器上下载、安装并启动DevKinsta。该应用程序为你提供三个选项:创建一个新的WordPress网站,从Kinsta导入一个现有的网站,或创建一个自定义网站。

    使用DevKinsta创建新网站

    使用DevKinsta创建新网站

    创建一个新的WordPress网站就像填写一个简单的表格并点击创建网站一样容易。

    DevKinsta的新WordPress网站创建界面

    DevKinsta的新WordPress网站创建界面

    恭喜你 – 你现在已经使用DevKinsta创建了一个容器化的WordPress网站。

    小结

    Docker是一个对开发者友好的工具,用于将运行MariaDB等数据库服务器的软件容器化。它的最小化环境有助于保持系统资源的效率而不牺牲功能。

    本教程教你如何安装Docker,设置MariaDB,并将WordPress网站与容器化的MariaDB数据库相连。另外,你还学会了如何使用DevKinsta来创建一个完全容器化的WordPress网站。

    对于WordPress网站的创建及其众多的托管解决方案,还有很多东西可以探索。如果你想发现你的网站管理可以如此简单,Kinsta的管理型WordPress主机可以满足你的要求。

  • 了解数据库技术:SQLite与MySQL的比较

    SQLite与MySQL的比较

    数据库已经成为几乎所有可以想象的应用程序的基本后端存储工具。如果你的应用程序包含需要访问的数据,你就需要一个数据库来存储和快速检索这些数据。

    数据库管理系统(DBMS)是旨在使用、检索和定义规则以验证和操作数据库中的数据的软件。有许多DBMS类型:关系型、面向对象型、分层型和网络型。

    选择一个合适的DBMS对于你的应用程序的成功和速度至关重要。有许多开源的DBMS,包括MySQL、MariaDB、SQLite、PostgreSQL和Neo4j,为你的项目选择最适合的数据库可能是一种挑战。

    让我们比较一下两个最流行的开源管理系统–MySQL与SQLite–详细说明它们是如何工作的,它们的根本区别,优点和缺点,最后,对于WordPress托管的网络应用来说,哪个更合适。

    1. 使用开源数据库的好处
    2. 什么是SQLite?
    3. 什么是MySQL?
    4. SQLite与MySQL:用例分析
    5. SQLite与MySQL的对比:优点和缺点
    6. SQLite与MySQL的对比:哪个更适合WordPress?

    使用开源数据库的好处

    虽然有许多专有的DBMS选择,但事实证明,开源数据库是最受欢迎的。它们的主要好处包括以下几点。

    • 数据库信息不与他人共享,提供安全优势。
    • 为支持更多的数据量或请求而进行扩展的成本较低
    • 一些开源数据库在可用资源的基础上运行,使其更灵活地匹配你的应用程序的需求。

    什么是SQLite?

    如前所述,DBMS包括四个主要类型。这些类型中的大多数以分层模型处理数据,以树状结构组织,并通过链接连接。

    SQLite是一个开源的关系型数据库管理系统(RDBMS)。 RDBMS在多个二维表中存储数据,而不是一个大表。每张表由包含唯一值的行组成,该值被称为键,用于连接各表。这就是为什么这些DBMS被称为关系型。

    在RDBMS中有两种类型的键:主键和外键。主键是识别每个数据库行的唯一值,而你可以使用外键来引用其他表。例如,假设你有一个公司雇员的数据库。没有必要在雇员表中添加部门名称。相反,你可以为雇员表中的部门添加一个带有引用的列–外键。这个外键引用 “部门 “表中的特定行。

    SQLite,正如它的名字所暗示的,在设置、管理和存储方面是轻量级的。

    大多数数据库需要一个服务器进程,但SQLite是无服务器的,这意味着应用程序可以直接读取和写入数据,而不需要客户端-服务器架构。此外,无服务器的SQLite不需要安装或配置,使其自成一体,对操作系统(OS)的依赖性较低。

    这些特点使SQLite适用于物联网(IoT)、嵌入式应用和桌面应用。

    什么是MySQL?

    快速、可靠、易学,大多数应用都使用MySQL作为他们的首选DBMS。

    与SQLite不同,MySQL遵循客户端-服务器架构,需要服务器来运行。服务器使用结构化查询语言(SQL)处理检索、操作和添加数据等命令。

    MySQL还带有一个内置的图形用户界面(GUI),称为MySQL Workbench,用于访问数据。它还提供了一个名为mysqladmin的命令行界面(CLI),用于管理可用的数据。

    此外,MySQL是独立于平台的,这意味着它可以在任何操作系统上运行,并与不同的编程语言如Python、Java和C++兼容。

    作为最流行的DBMS,还有一个优势:它的社区。互联网上有数以百万计的教程可以帮助你学习MySQL,而且你可以在网上找到几乎任何问题的答案。由于Oracle维护着MySQL,你可以在MySQL网站上找到教程、证书和支持。你还可以在我们的博客上阅读更多关于MySQL的信息。

    SQLite与MySQL:用例分析

    虽然MySQL和SQLite都是开源的RDBMS,但它们的架构和使用情况非常不同。

    架构

    MySQL遵循一个多层的服务器-客户端架构,由客户端、服务器和存储组成。客户端层使用GUI或CLI处理用户查询和命令。服务器层处理命令的逻辑,为每个请求创建一个新的线程。最后,存储层负责存储数据表格。

    相比之下,SQLite是一个无服务器的DBMS,它将SQL编译成字节码,然后使用虚拟机执行。后端以B树的实现方式将表存储在磁盘上。

    数据类型

    像大多数DBMS一样,MySQL使用静态类型进行数据存储,这意味着你必须在创建表的时候定义列数据类型。

    虽然大多数数据库引擎仍然使用静态类型来存储字符串数据,但SQLite使用动态类型来存储数据–存储在列中的值决定了列的数据类型。例如,如果你在创建时创建了一个整数类型的表,你可以在这个列中存储任何数据类型,因为该类型与值本身相关,而不是它的容器。此外,MySQL对常见的静态类型有向后兼容性。

    SQLite使用数据类型,而不是数据的存储类。这些类型比数据类型更通用,可以采用以下存储类之一。NULL、INTEGER、TEXT、BLOB和REAL。

    可扩展性

    MySQL的服务器-客户端架构是为可扩展性和大型数据库而设计的。服务器层简化了服务器的功能,而无需更新客户端。

    相反,SQLite仅限于单用户访问,使可扩展性变得困难。此外,所需的内存量随着数据库的增大而增加。

    可移植性

    MySQL在移动前需要压缩成一个文件,随着数据库的增加,这可能需要很长的时间。同时,SQLite将数据库保存为一个文件,使得复制和转移很容易。由于SQLite在虚拟机上运行查询,它对操作系统的依赖性很小。

    安全性

    任何人都可以编辑和查看SQLite的单一数据文件。SQLite没有一个内置的认证系统,所以安全性仅限于在该文件上设置的权限。

    另一方面,MySQL有许多安全功能,如支持不同权限级别的用户管理和使用安全外壳(SSH)。

    设置的简易性

    MySQL需要许多配置,如服务器配置、用户管理和备份。另一方面,SQLite很容易安装,不需要任何配置就可以运行。

    SQLite与MySQL的对比:优点和缺点

    MySQL的优点:

    • 易于学习
    • 与几乎所有的操作系统兼容
    • 与许多语言如C++、PHP、Java、Perl等一起工作
    • 支持多用户环境
    • 性能高

    MySQL的缺点:

    • 一些数据损坏的情况(虽然不是很严重)
    • 调试工具需要一些改进
    • 需要大量的内存

    SQLite的优点:

    • 服务器性能和内存要求低
    • 减少了能源消耗
    • 自成一体,便于携带
    • 默认包含在所有的PHP安装中

    SQLite的缺点:

    • 不支持多用户环境或XML格式
    • 一次只能处理一个连接
    • 性能随着数据库大小的增加而下降
    • 不能从客户端查询数据库

    SQLite与MySQL的对比:哪个更适合WordPress?

    WordPress是一个用PHP编写的流行的内容管理平台(CMS),它使用数据库来存储所有的网站信息,如用户数据、帖子、设置和内容。

    WordPress的默认数据库管理系统是MySQL,使其成为大多数WordPress网站的事实选择。它很适合大型项目,因为它很容易扩展,并提供更大的安全性。然而,SQLite是连接数较少的小型项目的理想选择,特别是如果你需要跳过配置MySQL数据库的复杂过程。

    虽然你可以用变通的方法让SQLite与WordPress一起工作,但这并不直接。WordPress的核心团队已经开始讨论让WordPress正式支持SQLite。实现这个功能可能需要一些时间,但是在WordPress安装过程中可以选择数据库类型将是超级有帮助的。

    还有MariaDB,是更大的MySQL的一个分支。MariaDB提供了更好的性能,更敏捷的更新,以及更好的许可。虽然它们总体上是相似的,但在某些情况下,MariaDB是更好的。你可以在这里阅读更多关于MariaDB与MySQL的信息

    小结

    数据库对大多数应用来说都是必不可少的。虽然数据库有不同的许可类型,但开源数据库管理系统为其他专有解决方案提供了一个很好的选择。

    比较SQLite与MySQL是具有挑战性的,因为两者都有方便的功能和独特的用例。SQLite是轻量级和可移植的,使它更适合于小规模的应用,如物联网和低流量的网站。另一方面,MySQL有一个庞大的社区基础,更适合可扩展的应用。

    正确的工具取决于你的应用程序的独特要求。选择完美的存储和托管解决方案可能会感到具有挑战性。

  • 如何列出MySQL数据库(分步代码教程)

    如何列出MySQL数据库(分步代码教程)

    MySQL是当今最广泛使用的关系型数据库管理系统(RDBMS)之一。它是一个强大的数据库平台,允许创建和管理可扩展的数据库,主要使用结构化查询语言(SQL)。

    MySQL服务器是数据库所处的环境–也是它们被访问的地方。作为一个服务器管理员,你经常需要检索这个环境的细节–列出服务器上的数据库,显示特定数据库的表,查看用户角色和权限,访问约束条件,等等。

    本文将解释如何通过命令提示符列出MySQL数据库的详情办法。

    1. 列出MySQL数据库的先决条件
    2. 在你的系统变量环境中添加MySQL路径
    3. 登录到MySQL
    4. 显示MySQL服务器内的数据库
    5. 过滤数据库输出的结果
    6. 使用信息结构来查询表元数据
    7. 常见的问题和最佳做法
    8. 数据库管理员

    列出MySQL数据库的先决条件

    你必须在你的本地机器上运行MySQL服务器才能开始使用。如果你没有MySQL,有几种方法可以安装它。

    • 安装WAMPServer、XAMPP、MAMP或任何其他包括MySQL的软件分发栈。
    • 直接从他们的官方网站下载并运行MySQL安装程序,通过设置过程来配置和安装MySQL服务器和其他工具。

    为了方便地使用命令行运行MySQL命令,你需要将MySQL可执行文件的路径添加到你的系统环境中。如果你使用选项二安装了MySQL,这一步就没有必要了,所以可以随意跳过下一节。

    将MySQL路径添加到你的系统的变量环境中

    如果你在Windows电脑上运行XAMPP或WAMP,本节将指导你把MySQL可执行路径添加到你的系统变量环境中。

    首先,启动你的Windows文件资源管理器并导航到此电脑。点击你安装WAMP或XAMPP软件包的驱动器(C:)。

    如果你正在运行XAMPP,导航到xampp > mysql > bin,并复制bin文件夹的完整路径。对于WAMP,通过{your-wamp-version} > bin > mysql > {your-mysql-version} > bin导航到其完整路径。

    bin文件夹的完整路径

    bin文件夹的完整路径

    点击 “Start“菜单,搜索 “path”。点击Edit the system environment variable

    然后,点击Startup and Recovery(启动和恢复)下的Environment Variables(环境变量),选择PATH变量并点击编辑

    接下来,点击 “新建“,粘贴你的MySQL可执行文件的完整路径(你之前复制的)。

    编辑环境变量

    编辑环境变量

    然后,通过单击 “确定 “来保存这些更改。

    现在路径已被添加,你可以在终端执行MySQL命令。

    登录到MySQL

    要列出MySQL数据库,用户必须被授权访问所有数据库,或者你必须设置一个全局的SHOW DATABASES权限,授予所有用户访问权。

    在通过命令提示符登录之前,请确保你的MySQL服务器正在运行。

    mysql -u -p
    mysql -u -p
    mysql -u  -p
    

    注意:用你的用户名替换 u 。MySQL的默认用户名是 root,而密码是空的(默认没有密码)。

    登录到MySQL

    登录到MySQL

    显示MySQL服务器中的数据库

    现在你已经登录了,你可以通过执行 SHOW DATABASES 命令列出服务器中存在的MySQL数据库。

    SHOW DATABASES;
    SHOW DATABASES;
    SHOW DATABASES;
    

    在返回数据中,你会得到存储中存在的所有数据库。

    存储的数据库的列表

    存储的数据库的列表

     

    在返回的六个数据库中,information_schemaperformance_schema是安装MySQL时自动生成的默认数据库。

    information_schema 数据库是一个不可修改的数据库,它存储了与数据库和其他存储在MySQL服务器中的对象(视图、用户权限、表、约束等)有关的所有信息。

    过滤数据库输出的结果

    以前,你用 SHOW DATABASES返回MySQL服务器上的所有数据库,但你经常需要过滤数据库输出,主要是当服务器上有许多数据库时。

    LIKE 子句根据一个指定的模式过滤 SHOW DATABASE 的结果。下面是一般的语法。

    SHOW DATABASES LIKE ;
    SHOW DATABASES LIKE ”;
    SHOW DATABASES LIKE '';

    它必须是一个代表你想匹配的模式的字符串。该字符串必须以百分比符号(%)结尾,表示一个或多个字符。

    例如,如果你想只显示名称以字母w开头的数据库,你可以通过运行以下程序来实现。

    SHOW DATABASES LIKE ‘w%’;
    SHOW DATABASES LIKE ‘w%’;
    SHOW DATABASES LIKE 'w%';
    

    下面是过滤后的结果。

    使用'w%'过滤后的数据库响应

    使用’w%’过滤后的数据库响应

    使用信息结构来查询表元数据

    早些时候,你看到了 information_schema 数据库如何在MySQL服务器环境中存储与数据库、表和其他对象有关的所有信息。

    information_schema 数据库利用schemata表来存储所有数据库的信息。对于数据库的过滤,你可以进行复杂的搜索,以查询特定数据库的模式表。

    例如,如果你想要那些名字以 “samp “或 “word “开头的数据库,你可以结合其他几个子句来进行复杂查询。

    SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE ‘samp%’ OR schema_name LIKE ‘word%’;
    SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE ‘samp%’ OR schema_name LIKE ‘word%’;
    SELECT schema_name FROM information_schema.schemata WHERE schema_name LIKE 'samp%' OR schema_name LIKE 'word%';
    

    下面是结果。

    复杂查询的结果

    复杂查询的结果

    此外,你还有来自 information_schema 数据库的tables表,它包含了所有表的信息。同样,你可以执行一个查询,只检索符合指定模式的表。

    例如,下面的查询只返回WordPress表的模式信息–只返回名称以 “wp_”开头的表。

    SELECT * FROM information_schema.tables WHERE table_name LIKE ‘wp_%’;
    SELECT * FROM information_schema.tables WHERE table_name LIKE ‘wp_%’;
    SELECT * FROM information_schema.tables WHERE table_name LIKE 'wp_%';
    

    结果是这样的。

    只有WordPress表的信息结构的结果

    只有WordPress表的信息结构的结果

    在 information_schema 中发现的其他表格包括columnsconstraintstable_constraintscheck_constraintsreferential_constraints

    常见的问题和最佳做法

    执行SQL时最常见的错误原因之一是没有在语句的结尾使用分号。

    另一个原因是使用无效的SQL语法或表/列名称拼写错误。为了避免这种情况,请交叉检查表或列的名称,确保其拼写正确。请确保也要交叉检查你的语法。

    这里有一些其他的最佳做法要记住。

    对SQL关键词使用大写字母

    当写SQL代码时,总是对SQL关键字使用大写字母,对表名和列名使用小写字母。这使你的代码更易读,更不容易出错。

    所以,与其这样:

    select * from information_schema.tables where table_name like ‘wp_%’;
    select * from information_schema.tables where table_name like ‘wp_%’;
    select * from information_schema.tables where table_name like 'wp_%';
    

    不如这样做:

    SELECT * FROM information_schema.tables WHERE table_name LIKE ‘wp_%’;
    SELECT * FROM information_schema.tables WHERE table_name LIKE ‘wp_%’;
    SELECT * FROM information_schema.tables WHERE table_name LIKE 'wp_%';
    

    避免使用 SELECT *

    避免在你的SQL查询中使用SELECT *。你的请求是不明确的,因为你不能总是知道它将返回什么。相反,指定你想从表中选择的列。

    所以,与其这样:

    SELECT * EXCEPT(phone) FROM users.profile
    SELECT * EXCEPT(phone) FROM users.profile
    SELECT * EXCEPT(phone) FROM users.profile

    不如这样:

    SELECT name,
    dob,
    address,
    country,
    address,
    FROM user.profile
    SELECT name,
    dob,
    address,
    country,
    address,
    FROM user.profile
    SELECT name,
        dob,
        address,
        country,
        address,
    FROM user.profile

    缩进你的代码

    最后,还有一个使查找错误更容易的提示是缩进你的代码。这将使它更有可读性。

    数据库管理器

    另外,你可以选择通过使用数据库管理器来管理你的数据库,而不用写SQL。这允许用户访问数据库管理功能,而不需要编写SQL查询。这个软件连接到MySQL服务器,并提供一个用户界面来暴露数据库的功能。一旦连接,用户界面将显示服务器上的所有数据库。各个管理工具的外观和感觉各不相同,但过程是相似的。

    DevKinsta的数据库管理器

    DevKinsta的数据库管理器

    有几个工具可供选择,包括 phpMyAdmin 和 Adminer,这两个工具都可以通过 DevKinsta 访问。DevKinsta的默认管理工具是Adminer,因为它是轻量级的,简单的,快速的,但phpMyAdmin也可以轻松访问。

    小结

    作为一名服务器管理员,你需要能够有效和准确地检索关于你的MySQL服务器上的数据库的详细信息。查看服务器上有哪些数据库,查看特定的表和其中的信息,以及访问有关用户角色和权限的信息,这些都是至关重要的任务。幸运的是,从你的命令行使用SQL可以使这一切变得轻而易举。

  • 最常见的WordPress函数

    常见WordPress函数

    WordPress是目前流行的内容管理系统(CMS)平台,适用于各种类型的网站。它的用户友好性和高度可定制性,使其成为众多项目的热门选择。

    这篇文章列出了定制WordPress主题开发中使用的常见PHP代码。我们提供了关于如何将这些函数纳入你的WordPress网站的基本概述。

    最常见的WordPress函数
    网站的标题 <?php bloginfo(‘title of my site’); ?>
    特定文章或页面的标题 <?php wp_title(); ?>
    style.css文件的主题位置 <?php bloginfo(‘stylesheet_ url’); ?>
    网站的Pingback URL <?php bloginfo(‘pingback_url’); ?>
    网站主题文件的位置 <?php bloginfo(‘template_url’); ?>
    网站的WordPress版本 <?php bloginfo(‘version’); ?>
    网站的Atom URL <?php bloginfo(‘atom_url’); ?>
    网站的确切URL <?php bloginfo(‘rss2_url’); ?>
    网站的名称 <?php bloginfo(‘name’); ?>
    网站的Html版本 <?php bloginfo(‘html_type’); ?>
    网站的字符集参数 <?php bloginfo(‘charset’); ?>
    特定文章或页面的作者 <?php the_author(); ?>
    某一特定文章或页面的ID <?php the_ID(); ?>
    编辑特定文章或页面的链接 <?php edit_post_link(); ?>
    来自blogroll的链接 <?php get_links_list(); ?>
    Comment.php文件的内容 <?php comments_template(); ?>
    网站的页面列表 <?php wp_list_pages(); ?>
    网站的类别列表 <?php wp_list_cats(); ?>
    下一篇文章的URL <?php next_post_link(‘%link’) ?>
    上一篇文章的URL <?php previous_post_link(‘%link’) ?>
    内置的日历 <?php get_calendar(); ?>
    网站的档案列表 <?php wp_get_archives() ?>
    下一篇和上一篇文章的链接 <?php posts_nav_link(); ?>
    网站的描述 <?php bloginfo(‘description’); ?>
    文章的内容 <?php the_content();?>
    检查是否有文章 <?php if(have_posts()) : ?>
    如果有文章就显示文章 <?php while(have_posts()) : the_post(); ?>
    关闭 ‘while’ PHP函数 <?php endwhile; ?>
    关闭 ‘if’ PHP函数 <?php endif; ?>
    Header.php文件的内容 <?php get_header(); ?>
    Sidebar.php文件的内容 <?php get_sidebar(); ?>
    Footer.php文件的内容 <?php get_footer(); ?>
    日期为’06-21-11’格式 <?php the_time(‘m-d-y’) ?>
    文章上的评论的链接 <?php comments_popup_link(); ?>
    一个特定的文章或页面的标题 <?php the_title ();?>
    特定文章或页面的URL <?php the_permalink() ?>
    特定文章或页面的分类 <?php the_category(‘,’) ?>

    如何使用WordPress函数

    WordPress的一个优点是它为内容生产者提供了直观的用户界面,同时又有足够的配置选项供任何认真的开发者定制CMS以满足独特的需求。上面列出的WordPress功能是由WordPress提供的,可以在开发WordPress主题时使用,但WordPress是可扩展的,允许编写自定义功能。幸运的是,在许多情况下,WordPress提供的功能足以建立或改变一个企业或组织的网站。如果你正在创建你自己的自定义WordPress主题,或者你想知道如何编辑一个你已经安装的主题,那么请执行这些步骤。

    1. 登录到你的WordPress网站。一个常见的地方是:www.your-wordpress-site.com/wp-admin 然而,WordPress登录页面的确切位置将取决于你的网站是如何设置的。
    2. 一旦登录到WordPress,你会看到一个叫做仪表板的页面。在左边应该有一个导航菜单,你要找到外观→编辑器部分来查看相关的WordPress文件。
    3. 编辑器页面的右侧会有一个你可以查看和编辑的文件列表。要开始,你可以从该列表中选择index.php,点击它。

    index.php模板的第一行可能有这样一段代码:<?php get_header(); ?>。这是一个简单的代码片段,说的是 “将页眉内容放在这个页面的顶部”。在另一个文件中,一个通常被命名为header.php的文件,有一些代码指定了标题的实际内容。如果你仍然在WordPress的编辑器部分,你可以从右边的列表中选择header.php来看看这是如何建立的。下面你会发现更多WordPress中常用的有用代码片段。

    其他有用的WordPress代码片段
    自定义permalinks /%postname%/
    包括任何文件 <?php include(TEMPLATEPATH .’/x’); ?>
    搜索表单的值 <?php the_search_query(); ?>
    打印信息 <?php _e(‘Message’); ?>
    显示注册链接 <?php wp_register(); ?>
    显示登录/注销链接 <?php wp_loginout(); ?>
    将内容分成若干页 <!–next page–>
    切断内容 <!–more–>
    管理员的元数据 <?php wp_meta(); ?>
    加载页面的时间 <?php timer_stop(1); ?>
    加载页面的查询 <?php echo get_num_queries(); ?>