在wordpress插件中定义动态页面

时间:2012-12-29 13:38:18

标签: php wordpress-plugin wordpress php-5.2

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

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

SITE_NAME/cities/NY

SITE_NAME/cities/Califonia

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

成为WP插件的新手。我的方法是否正确(用于创建文件)?还有其他办法吗?

5 个答案:

答案 0 :(得分:5)

如果你没有使用Wordpress,你的方法会有效,但我绝对不会建议你在Wordpress Framework中做你想要的事情。

不是试图重新发明轮子,而是使用现有的插件实现您想要的一切。我绝对建议采用这种方式,特别是如果你没有很多编写Wordpress插件的经验。

第1步:

安装Wordpress

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

第2步:

安装Types

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

第3步:

注册Custom Post Type

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

第4步:

注册Custom Taxonomy

将分类法​​视为对事物进行分类的一种方式。 Wordpress附带两个默认分类法:类别(分层)和标签(非分层)。在您的情况下,您需要为新的事件发布类型定义一个名为“城市”的非分层分类法。

第5步:

注册Custom Fields

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

第6步:

配置Permalinks

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

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

答案 1 :(得分:4)

maiorano84写了一个相当全面的指南来设置你需要的东西,而不是依赖插件,我更喜欢向你展示如何编写一个插件来注册自定义的帖子类型和分类。为此,我写了一个小插件,应该做你需要的一切,它有很多评论和文档链接,这样你就可以理解为什么的东西。

代码

https://github.com/fyaconiello/WP_Cities_Events

这个插件做了几件事

  1. 创建自定义帖子类型事件
  2. 创建自定义分类城市
  3. 向Event
  4. 添加自定义元变量
  5. 将城市分类添加到活动
  6. 这个插件不需要安装任何额外的插件,它是无依赖的,只使用WP核心。

    URLS

    至于获取正确的网址结构,我建议您仔细阅读: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
    2. 中生成所有 EVENT 帖子的页面
    3. 您需要一个网址:SITE_URL/cities/CITY/EVENT来阅读特定城市中的特定活动
    4. 关于如何网址的编辑:

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

      Screenshot

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

      screenshot 2

      将鼠标悬停在您的某个条款上(在我的情况下是纽约市),然后点击查看。

      screenshot 3

      它应该打开那个术语(城市)的列表视图,网址结构如下:http://wp.local/city/new-york-city/

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

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

      编辑2

      test event is not part of city it is a post categorized by city

答案 2 :(得分:2)

为什么不将城市设为Custom Post Type?然后,您可以定义一个子弹“城市”并获得该结果,还可以添加类别和标签等分类法,以进一步帮助导航。

答案 3 :(得分:2)

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

所以,我认为你必须开始阅读有关WordPress plugins(其哲学和API)的基础知识,然后决定是否要使用其自定义帖子类型(准备使用)或者如果你想创建特定的内容类型。

答案 4 :(得分:0)

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