替换或覆盖update_post_meta函数

时间:2018-08-31 13:23:59

标签: hook

我目前正处于一个项目的结尾,我发现这非常具有挑战性。

其中一项关键要求是使用户能够在WordPress多站点上的站点之间克隆帖子。

此外,克隆的帖子必须自动彼此保持同步。因此,如果用户决定在主站点上更新克隆的帖子,则在具有克隆的其他站点上也必须进行相同的更改。

更复杂的是,用户可以在任何克隆的帖子上取消选中“同步元”框,并且同步将不再发生。

由于该解决方案专注于监视元数据和更新元数据,因此我最初尝试使用挂钩和操作来创建解决方案。

但是,由于可能发生的所有极端情况,每当我在一项子要求上取得进展时,都会遇到另一项子要求。

经历了很多苦难之后,我认为此任务对我来说开始测试驱动开发将是一件好事。

我能够设置PHPUnit和wordpres进行开发,因此我可以继续使用WordPRess函数,同时仍然可以进行单元测试。

花了些力气,但是我能够创建一个可靠的类,该类可以满足所有情况。

但是,我无法在沙盒TDD环境中进行操作和执行钩子操作,因此我有点创意并创建了一个函数(如下所示),该函数正常调用了update_posit_meta,但进一步调用了确定是否某些东西需要更新。

private function update_post_meta_and_maybe_cloned_posts( $post_id, $meta_key, $meta_value, $maybe_target_blog_id) {
    update_post_meta( $post_id, $meta_key, $meta_value );
    $meta_object = $this->get_complete_meta( $post_id, $meta_key );
    return $this->helper->maybe_clone_post( $meta_object, $maybe_target_blog_id );
}   

有点骇人听闻,但它可以解决具有挑战性的问题。

但是,我面临的挑战是我知道需要将该代码重新实现到非沙盒WordPress中。环境。

我正面临着我原本打算避免的同样问题。我不知道哪个钩子可以帮助我,以及应该如何实现。

我认为一些外部观点会很有帮助,因为我感到有点失败。

理想情况下,最好的解决方案是可以挂接到所有已更新的+ _post_meta函数调用,然后根据情况,进一步调用克隆和更新函数。

类似于我上面共享的功能,但是可以挂接到并允许我监视发布元数据的许多更新。

我能够绕开开发中的这个问题,因为我知道我在使用update_post_meta时,可以用我的update_post_meta_and_maybe_cloned_posts一个替换该功能。

在生产环境中,我需要使用钩子,动作或其他WordPress魔术来监视update_pst_meta的所有使用,同时仍然能够使用可用的信息; e确定是否需要进一步的步骤(是否需要克隆或更新)

根据我对该项目的简要经验,似乎psot_id,meta_key和meta_value可用于收集足够的信息来确定是否需要采取措施。

欢迎输入关于我的问题的信息。谢谢

0 个答案:

没有答案