【问题标题】:Defining dynamic pages in wordpress plugin在 wordpress 插件中定义动态页面
【发布时间】:2012-12-14 11:14:24
【问题描述】:

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

我的客户要求是网址必须是这样的

SITE_NAME/cities/NY

SITE_NAME/cities/Califonia

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

对 WP 插件不熟悉。我的方法是否正确(用于创建文件)?有没有其他办法?

【问题讨论】:

  • 看到你的问题,你想如何处理像Califonia而不是California这样的错误输入数据?你为什么要把它作为一个城市归档?
  • 我假设 SITE_NAME/cities/NY 为您提供了一个包含纽约所有城市的存档页面?并且单曲会有另一个页面,例如 SITE_NAME/new-york-city?如果我们有更多的信息会有所帮助。

标签: php wordpress php-5.2


【解决方案1】:

maiorano84 写了一个相当全面的指南来设置你需要的东西,而不是依赖插件,我更愿意向你展示如何编写一个插件来注册自定义帖子类型和分类。为此,我编写了一个小插件,它应该可以满足您的所有需求,并且它有大量的 cmets 和文档链接,以便您了解 为什么 的事情。

代码

https://github.com/fyaconiello/WP_Cities_Events

这个插件做了几件事

  1. 创建自定义帖子类型事件
  2. 创建自定义分类城市
  3. 向事件添加自定义元框
  4. 将城市分类添加到事件中

这个插件不需要安装任何额外的插件,它是无依赖的,只使用WP核心。

网址

至于获得正确的 URL 结构,我建议您仔细阅读此内容:http://codex.wordpress.org/Using_Permalinks

我不明白你想要的结构

CITY is a single term w/i the taxonomy *cities*
EVENT is the post single
  1. SITE_URL/cities/CITY 将生成该 CITY 中所有 EVENT 帖子的页面
  2. 您需要一个类似的网址:SITE_URL/cities/CITY/EVENT 来阅读特定城市的特定事件

编辑如何访问网址:

在您的Settings -> Permalinks 管理面板中选择:“帖子名称”并保存。

然后,转到您的 Ce Events -> Cities 管理屏幕。

将鼠标悬停在您的一个条款上(在我的例子中是纽约市)并点击查看。

它应该打开该术语(城市)的列表视图,并且 url 结构如下所示:http://wp.local/city/new-york-city/

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

'rewrite' => array('slug' => 'city'),

编辑 2

【讨论】:

  • 我不知道你是否完全理解我的问题,我想要这样的 URL SITE-URL/cities/city_name ,它将显示该城市的 ents 列表
  • 非常感谢.. 如果你再呆几分钟我会很高兴
  • 我相信“测试事件”是您在纽约市写的文本。在我的情况下,它不是硬编码文本,我想从事件表中自动填充它城市属性也是如此..
  • 当尝试激活插件时它给了我错误---解析错误:语法错误,SITE_URL/plugins/WP_Cities_Events-master/wp_cities_events.php 中的意外 T_PUBLIC 在第 33 行
  • “测试事件”不属于城市(术语内容),它是按城市分类的帖子 - 请参阅上面的编辑 2 以获取屏幕截图。我尝试了几个不同版本的 WP,但无法复制您在使用 unexpected T_PUBLIC 时遇到的问题。该文件的第 33 行是一个注释... 作为一个好奇,你正在运行什么版本的 PHP 和 WP?
【解决方案2】:

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

所以,我认为您必须开始阅读有关 WordPress plugins 的基础知识(其理念和 API),然后决定是要使用其自定义帖子类型(即用型)还是要创建特定的帖子类型内容类型。

【讨论】:

    【解决方案3】:

    如果您不使用 Wordpress,您的方法会奏效,但我绝对不建议您在 Wordpress 框架中执行您的建议。

    与其尝试重新发明轮子,不如使用现有插件来实现您想要的一切。我绝对建议你走这条路,特别是如果你没有太多的 Wordpress 插件编程经验。

    第 1 步:

    安装Wordpress

    不言自明。没有这个就什么都做不了。

    第 2 步:

    安装Types

    安装Types Plugin 将为您提供一个很好的界面来注册您自己的Custom Post Types 和许多其他扩展Wordpress 核心功能的功能。

    第三步:

    注册您的Custom Post Type

    这就是事情开始变得复杂的地方。使用类型,注册一个名为事件的自定义帖子类型。您希望将每个事件都作为自己的帖子的原因是因为每个事件都是独一无二的。城市旨在封装和定义事件组,这将我们带到下一步:

    第四步:

    注册您的Custom Taxonomy

    将分类法​​视为对事物进行分类的一种方式。 Wordpress 带有两个默认分类法:类别(分层)和标签(非分层)。在您的情况下,您需要为新的 Event Post Type 定义一个名为“Cities”的非分层分类法。

    第五步:

    注册您的Custom Fields

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

    第 6 步:

    配置您的Permalinks

    其中大部分可以通过类型本身(在配置自定义分类法时)或通过 .htaccess 重写,甚至可能通过 Wordpress 永久链接设置(尽管它相当有限)来完成。我的建议是在弄乱 .htaccess 之前先调整您的自定义分类法和永久链接设置。

    就是这样!希望这足以让您开始所需的一切。

    【讨论】:

      【解决方案4】:

      为什么不将 City 创建为 Custom Post Type?然后,您可以定义一个 slug 'cities' 并获得该结果,还可以添加类别和标签等分类法以进一步帮助导航。

      【讨论】:

        【解决方案5】:

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

        【讨论】:

        • 这不是 wordpress 的好方法。虽然我不会否认它可能有效,但这应该通过自定义帖子类型和分类法进行管理。
        猜你喜欢
        • 2013-01-10
        • 2012-07-22
        • 1970-01-01
        • 1970-01-01
        • 2016-08-21
        • 2012-10-02
        • 1970-01-01
        • 1970-01-01
        • 2018-01-21
        相关资源
        最近更新 更多