如何将自定义表中的行(资源)动态注册为自定义类型的帖子?

时间:2016-05-18 作者:Felix

如何让wordpress从DB查询中创建“虚拟”页面(或者更适合:不同的自定义帖子类型)?

该表可以为每行映射一个资源(在我的例子中是事件)。实体由遗留应用程序提供和管理,并不时进行更改(由于太频繁,无法手动复制数据,它们将由脚本更新)。

我仍然希望能够通过唯一的永久链接访问每个资源,并希望能够对它们进行迭代(创建归档页等)。

我认为POD试图通过“高级内容类型”实现类似的功能(http://pods.io/docs/learn/what-are-advanced-content-types/) 但这似乎是一项开销。

还可以使用给定的参数仅创建一个页面(events/show?slug=myevent1) 但这对SEO不够友好,不符合我的口味,并且丢掉了WP建模给我们带来的所有好处,包括归档、元数据和其他东西。

我的问题不是关于自定义表、SQL查询等“技术”,而是如何利用已有的所有WP内容对这种行为进行建模。

1 个回复
SO网友:edelwater

我想你已经给出了答案:使用自定义帖子类型:为每种类型定义一个自定义帖子类型。

双向同步的一些注意事项:

元数据属性更改不会更改修改日期,这可能便于同步时进行验证。幸运的是,您可以为此添加一些回调,例如:示例元数据字段更改>修改日期

add_action( "updated_post_meta", array($this, \'updateModifiedDate\'), 10 ,4);
                add_action( "added_post_meta", array($this, \'updateModifiedDate\'), 10 ,4);
    function updateModifiedDate($post_id, $key, $value) {
                $array = array (
                        \'ID\' => $post_id,
                        \'post_modified\' => current_time(\'mysql\',false),
                        \'post_modified_gmt\' => current_time(\'mysql\',true)
                );
                wp_update_post($array);         
            }
很高兴使用“唯一键”-“修改”-“其他属性”存储上次在缓存中同步的时间。这将为您提供自上次以来发生的变化以及两侧的新变化。除此之外,还可以对它们的共享唯一密钥进行实时匹配。此组合信息为您提供了关于任一侧的新组合和/或任一侧的CRUDN操作的信息(这为您提供了75种不同的组合,您可以检查这些组合,其中大多数会导致相同的操作)。(CRUDN)x(CRUDN)x(side1 | side2 | both)通过这种方式,您可以支持双向同步。大多数可以自动完成,在某些情况下,合并需要手动干预或选择。

在complexer环境中进行批处理时的一般建议:使用临时环境:将包含要加载的数据的表,可能已经转换以便于加载。然后安排加载以转换数据、地图数据等。。对于生产环境,例如wp custom posts+meta+tax始终将所有内容记录在同步日志中,以便您始终可以找到发生的情况,尤其是同步自动运行时,在那里放置一些计时器,以便您可以看到瓶颈,尤其是对于需要数小时(或数周)才能加载的大型作业。瓶颈是指“清理”数据,这可能需要总时间的三分之一

相关推荐