新发布的 post 的 Wordpress 挂钩可以访问 post 元数据
Wordpress hook for newly published post that can access to post metadata
我只需要对需要 post 元数据.
的新发布的 post 执行一些 操作
我尝试了很多不同的挂钩,但它们都会触发其他 "events",例如更新 post,或者如果它们仅在发布时触发,则元数据为空或只有 [=54] =]里面的值。
auto-draft_to_publish钩子在我需要的时候触发,但是没有post meta
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>";
}
transition_post_status 使用正确的状态检查,但也没有 post 元数据
'publish' === $new_status && 'publish' !== $old_status // right time,no post meta
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>";
}
save_post 一旦在边栏中按下 "Add New",这个就会触发
我在这方面遇到了很多问题,我很难相信 "basic" 不会成为 wordpress 的一个功能,但到目前为止我在搜索中没有发现任何有用的东西.
提前致谢。
首先,请在您的开场白下方查看我的评论 post。
其次,在 1. 示例中你 post,你正在转储 $get_post_meta
,但你打算转储 $post_meta
。
我注意到$post
里面有post身份证号,不是$post->ID
,所以我把$post
发给了get_post_meta
。
这似乎对我有用:
add_action( 'publish_post', 'myfunction' );
function myfunction($post) {
print_r(get_post_meta($post)); die();
}
确保在创建类型为 post 的新 post 时对其进行测试,而不是其他自定义 post 类型或页面,如注释中解释的 link ( https://adambrown.info/p/wp_hooks/hook/publish_post ) ,您需要将钩子更改为其他内容才能在其他 post 类型上使用它。所以 'publish_events' 对于 post 输入 events
.
更新
抱歉,我看到结果 post_meta
中的信息很少:
Array ( [_edit_last] => Array ( [0] => 1 ) [_encloseme] => Array ( [0] => 1 ) )
也许是时候向 Wordpress 提出功能请求了(对于 post 发布挂钩)。
我最终使用了 publish_post 钩子,最初它不起作用,因为如果你有自定义 post 类型,它必须像这样使用:
publish_yourCustomPostName
它仍然无法从数据库访问 post 元数据,因为它是在 post 元数据保存到数据库之前触发的,但幸运的是我可以从 $ 访问 post 元数据_POST 变量如下:
$_POST['acf']
我只需要对需要 post 元数据.
的新发布的 post 执行一些 操作我尝试了很多不同的挂钩,但它们都会触发其他 "events",例如更新 post,或者如果它们仅在发布时触发,则元数据为空或只有 [=54] =]里面的值。
auto-draft_to_publish钩子在我需要的时候触发,但是没有post meta
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>"; }
transition_post_status 使用正确的状态检查,但也没有 post 元数据
'publish' === $new_status && 'publish' !== $old_status // right time,no post meta
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>"; }
save_post 一旦在边栏中按下 "Add New",这个就会触发
我在这方面遇到了很多问题,我很难相信 "basic" 不会成为 wordpress 的一个功能,但到目前为止我在搜索中没有发现任何有用的东西.
提前致谢。
首先,请在您的开场白下方查看我的评论 post。
其次,在 1. 示例中你 post,你正在转储 $get_post_meta
,但你打算转储 $post_meta
。
我注意到$post
里面有post身份证号,不是$post->ID
,所以我把$post
发给了get_post_meta
。
这似乎对我有用:
add_action( 'publish_post', 'myfunction' );
function myfunction($post) {
print_r(get_post_meta($post)); die();
}
确保在创建类型为 post 的新 post 时对其进行测试,而不是其他自定义 post 类型或页面,如注释中解释的 link ( https://adambrown.info/p/wp_hooks/hook/publish_post ) ,您需要将钩子更改为其他内容才能在其他 post 类型上使用它。所以 'publish_events' 对于 post 输入 events
.
更新
抱歉,我看到结果 post_meta
中的信息很少:
Array ( [_edit_last] => Array ( [0] => 1 ) [_encloseme] => Array ( [0] => 1 ) )
也许是时候向 Wordpress 提出功能请求了(对于 post 发布挂钩)。
我最终使用了 publish_post 钩子,最初它不起作用,因为如果你有自定义 post 类型,它必须像这样使用:
publish_yourCustomPostName
它仍然无法从数据库访问 post 元数据,因为它是在 post 元数据保存到数据库之前触发的,但幸运的是我可以从 $ 访问 post 元数据_POST 变量如下:
$_POST['acf']