新发布的帖子的Wordpress钩子,可以访问帖子元数据

时间:2019-11-20 17:10:43

标签: php wordpress metadata custom-post-type wordpress-hook

我只需要对需要发布元数据的新发布帖子进行一些操作

我尝试了许多不同的钩子,但是它们都还会触发其他“事件”,例如更新帖子,或者如果它们仅在发布时触发,则元数据为空或内部只有_edit_lock值。

    当我需要
  1. auto-draft_to_publish 钩子触发器时,却没有帖子元

    add_action( 'auto-draft_to_publish', 'wpse120996_specific_post_status_transition' );
    
    
    function wpse120996_specific_post_status_transition($post) { 
     if ($post->post_type != 'poruke') {
        return;
     }
     $post_meta = get_post_meta($post->ID);
     echo "<pre>";
        die(var_dump( $get_post_meta ));
     echo "</pre>";
    
    }
    
  2. transition_post_status 可用于正确的状态检查,但也没有发布元信息

    'publish' === $new_status && 'publish' !== $old_status // right time,no post meta
    
  3. publish_post ,似乎这是出于某种原因甚至没有触发

    add_action( 'publish_post', 'myfunction' );
    function myfunction($post) { 
     echo "<pre>";
        die(var_dump( 'PUBLISHED?' )); // this dump is nowhere to be found, I looked in network tab in debugger
     echo "</pre>";
    }
    
  4. 保存帖子,只要在边栏中按下“添加新内容”,就会触发此提示

我对此有很多问题,并且很难相信,“基本”一词在wordpress中不会成为特色,但是到目前为止,我发现没有什么有用的东西。

谢谢。

2 个答案:

答案 0 :(得分:0)

首先,在我的开篇帖子下方查看我的评论。

第二,在您发布的1.示例中,您正在转储$get_post_meta,但您打算转储$post_meta

我注意到$post中有邮政编码,而不是$post->ID,所以我将$post发送到get_post_meta

这似乎对我有用:

add_action( 'publish_post', 'myfunction' );
function myfunction($post) {        
    print_r(get_post_meta($post)); die();
}

请确保在制作新的帖子类型(而不是其他自定义帖子类型或页面)时进行测试,例如注释中解释的链接(https://adambrown.info/p/wp_hooks/hook/publish_post),您需要将钩子更改为其他内容在其他帖子类型上使用它。因此,发布类型为events的'publish_events'。

更新

抱歉,我看到生成的post_meta中包含的信息很少:

Array ( [_edit_last] => Array ( [0] => 1 ) [_encloseme] => Array ( [0] => 1 ) )

也许是时候向Wordpress提出功能请求了(用于发布后发布的钩子)。

答案 1 :(得分:0)

我最终使用了 publish_post 钩子,这本来是行不通的,因为如果您有自定义帖子类型,则必须这样使用它:

OnClick()

它仍然无权访问数据库中的发布元,因为它是在将postmeta保存到数据库之前触发的,但是幸运的是我可以从$ _POST变量访问发布元,如下所示:

C# method