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

问题描述 投票:0回答:2

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

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

_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>"; }

  1. transition_post_status
    适用于正确的状态检查,但也没有帖子元
'publish' === $new_status && 'publish' !== $old_status // right time,no post meta

  1. 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>"; }

  1. save_post
     在侧边栏中按下“添加新”时就会触发
我对此有很多问题,我很难相信如此“基本”的东西不会成为 WordPress 中的功能,但到目前为止我在搜索中没有发现任何有用的东西。

提前致谢。

php wordpress metadata custom-post-type wordpress-hook
2个回答
2
投票
我最终使用了

publish_post 钩子,最初它不起作用,因为如果您有自定义帖子类型,则必须像这样使用:

publish_yourCustomPostName

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

$_POST['acf']
    

1
投票
首先,请参阅我在您的开场帖子下面的评论。

其次,在您发布的1.示例中,您正在倾销

$get_post_meta

,但您本来打算倾销
$post_meta

我注意到

$post

中有帖子ID号,而不是
$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),您需要将挂钩更改为其他内容才能在其他帖子类型上使用它。因此,帖子类型为“publish_events”events

更新

我很抱歉,我看到结果

post_meta

里面几乎没有信息:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.