Wordpress 使用来自自定义 table 数据的永久链接创建自定义页面

Wordpress create custom pages with permalinks from custom table data

我有 1 个自定义 table(不是 wp 核心 table),其中导入了特定产品。我已经设置了自定义 wp 页面,其中列出了这些产品,创建了自定义过滤器等。在这一步中,到目前为止一切正常 - 列出了产品并且过滤有效,分页有效...

但是我现在想进一步扩展 - 在产品列表页面中单击产品名称时打开每个产品页面(如 /product-listing-page/product-name-1)...这是如何实现的 "out of wp_posts" table?

为什么我不使用 wp_posts table:网站有静态页面和动态帖子,因为新闻和产品 table 每天被截断并重新导入一次夜晚!因此,当产品列表是动态的并且在每次导入之前被完全截断时,无法真正使用 wp_posts 页面...

有什么想法吗?也许有人已经做过这样的事情了?;-)

我不知道您是否开发了一个插件来处理您创建的所有自定义 table 和代码,但如果您没有,我强烈建议您这样做。

因为通过将您的代码作为插件,您有机会使用 wordpress 的所有组件,例如重写规则系统,我认为这可以帮助您实现您的目标。

我前段时间为一个我收费的网站创建了一个插件,我需要一个自定义页面显示在网站 (worpdress) url 系统中,这就是你想要做的,如果我正确理解你的问题。 不幸的是,此插件已经发展,我没有保留该代码的备份,但如果我没记错的话,这是我遵循的粗略方法:

我创建了一个插件来处理:

  • 自定义数据库 table(s)
  • 自定义 php 个对象
  • ...

AND(这是有趣的部分)将重写规则添加到 wordpress 重写规则系统中,如下所示:

  1. 设置重写标签(初始化操作)(如果需要)
  2. 添加重写规则(初始化操作)
  3. 拦截url并解析它以获取我在自定义中需要的参数 页面(parse_request 操作)

以下函数可以帮助您:

你需要挂钩:

希望对你有所帮助。

解决方案非常简单快捷!根据我的需要,注册全局查询 var:

就足够了
    function register_new_query_var($vars) {
        $vars[] = 'product_id';
        return $vars;

    add_filter('query_vars', 'register_new_query_var');

然后我更改了页面产品列表页面的主题模板,以适用于产品列表和使用的单个产品 如果(!get_query_var('product_id'))。因此,如果查询为空 - 列出内容,如果不为空 - 执行个别产品内容!

对我来说这已经足够了,我什至不需要 seo 友好的 url(因为产品列表每天都在变化,所以 - 每天都会有新产品、链接,并且会有很多 404 错误)。 .

我可以使用 http://example.com/product-listing-page?product_id=1 并且页面显示的日期来自自定义 table! ;-)