Php 在wordpress插件中定义动态页面

Php 在wordpress插件中定义动态页面,php,wordpress,php-5.2,Php,Wordpress,Php 5.2,我正在创建我的第一个wordpress插件。在其中,用户可以选择添加新城市并查看这些城市上的事件 我的客户要求URL必须如下所示 SITE_NAME/cities/NY 或 决定的是,我将创建一个文件夹cities,如果用户试图创建一个新城市,我将在该文件夹中与该城市创建一个文件,此外,我还将在数据库中添加条目。我还将在文件中插入PHP代码 是新的可湿性粉剂插件。我的方法(创建文件)正确吗?还有其他方法吗?是的,这是一种很好的方法。您可以做的另一件事是,不要在fie中添加代码。从DB中选择代码

我正在创建我的第一个wordpress插件。在其中,用户可以选择添加新城市并查看这些城市上的事件

我的客户要求URL必须如下所示

SITE_NAME/cities/NY

决定的是,我将创建一个文件夹cities,如果用户试图创建一个新城市,我将在该文件夹中与该城市创建一个文件,此外,我还将在数据库中添加条目。我还将在文件中插入PHP代码


是新的可湿性粉剂插件。我的方法(创建文件)正确吗?还有其他方法吗?

是的,这是一种很好的方法。您可以做的另一件事是,不要在fie中添加代码。从DB中选择代码。
在DB中创建一个表,创建一个数据类型为varchar的列,并在其中插入公共代码。

为什么不创建城市作为一个数据类型?然后,您可以定义一个slug“cities”并获得该结果,还可以添加分类法(如类别和标记)以进一步帮助导航。

如果您不使用Wordpress,您的方法会起作用,但我绝对不建议您在Wordpress框架内执行建议的操作

与试图重新发明轮子不同,您想要的一切都可以通过现有插件实现。我绝对建议你走这条路,尤其是如果你没有太多的Wordpress插件编程经验的话

步骤1:安装 不言自明。没有这个我什么都做不了

步骤2:安装 安装将为您提供一个很好的界面,用于注册您自己的功能以及扩展Wordpress核心功能的许多其他功能

第三步:注册你的 这就是事情开始变得复杂的地方。使用类型,注册一个名为Event的自定义Post类型。您希望将每个事件作为自己的帖子的原因是因为每个事件都是唯一的。城市意味着封装和定义事件组,这将我们带入下一步:

第四步:注册你的 把分类法看作是对事物进行分类的一种方法。Wordpress有两个默认分类法:类别(层次)和标记(非层次)。在您的情况下,您需要为新的事件发布类型定义一个称为“城市”的非层次分类法

第五步:注册你的 自定义字段是最简单的部分。什么定义了你的活动?也许有些字段定义了特定事件的开始和结束时间?表示免费茶点的复选框?天空是极限。所有事件都有哪些定义特征使其成为事件?以自定义字段的形式添加这些字段。这些将以元框的形式显示在事件编辑器上。如果在特定事件的编辑页面上看不到元框,请确保通过单击屏幕右上角的屏幕选项并勾选字段所在的复选框来启用元框

步骤6:配置您的 这可以通过类型本身(在配置自定义分类法时)或通过.htaccess重写来完成,或者甚至可以通过Wordpress Permalinks设置来完成(尽管它相当有限)。我的建议是在使用.htaccess之前,首先调整自定义分类法和永久链接设置


就这样!希望这足以让你开始做你需要的一切。

不要这样做。WordPress为您提供了一个GoogAPI来完成您想做的事情:管理漂亮的URL(slug)、数据库操作(您不需要为此编写/读取文件)以及注册和触发操作的正确代码工作流


因此,我认为你必须开始阅读(它的原理和API)的基础知识,然后决定是使用它的自定义帖子类型(即用)还是创建特定的内容类型。

maiorano84编写了一份相当全面的指南,介绍如何设置所需的内容,而不是依赖插件,我更愿意向您展示如何编写插件来注册自定义帖子类型和分类法。为此,我写了一个小插件,它可以做你需要的一切,它有大量的评论和链接到文档,这样你就可以理解为什么

代码 这个插件做了几件事

  • 创建自定义post类型事件
  • 创建自定义分类城市
  • 将自定义元数据库添加到事件
  • 将城市分类添加到事件中
  • 这个插件不需要安装任何额外的插件,它是无依赖性的,只使用WP核心

    网址 至于获得正确的URL结构,我建议您仔细阅读以下内容:

    我不明白你想要的结构
  • SITE\u URL/cities/CITY
    将生成该城市所有活动帖子的页面
  • 您需要一个url,如:
    SITE\u url/cities/CITY/EVENT
    来读取特定城市中的特定事件
  • 编辑如何创建URL: 在
    Settings->Permalinks
    管理面板中选择:“帖子名称”并保存

    然后,转到您的Ce
    Events->Cities
    admin屏幕

    将鼠标悬停在某个术语上(在我的例子中是纽约市),然后单击“查看”

    它应该打开该术语(城市)的列表视图,url结构如下所示:

    如果您需要
    city
    阅读
    cities
    ,请修改我与您共享的主插件文件的第102行:

    'rewrite' => array('slug' => 'city'),
    
    编辑2

    看到您的问题,您希望如何处理输入错误的数据,例如
    Califonia
    ,而不是
    California
    ?那你为什么要把它作为一个城市来归档呢?我假设站点_NAME/cities/NY会给你一个类似存档的页面,上面有纽约所有的城市?这首单曲还会有另一个页面,比如SITE_NAME/纽约市?我不知道你是否完全理解我的问题,我想要像这个网站一样的URL-URL/cities/city\u name,它会显示那个城市的事件列表谢谢你。。我会的
    CITY is a single term w/i the taxonomy *cities*
    EVENT is the post single
    
    'rewrite' => array('slug' => 'city'),