首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在发布后捕获wordpress帖子ID

如何在发布后捕获wordpress帖子ID
EN

WordPress Development用户
提问于 2022-03-05 23:58:34
回答 1查看 46关注 0票数 0

当一篇文章发表时,我会自动地尝试一个论坛部分--就像一个讨论页面。通常情况下,我想让用户创建主题,但我意识到一个论坛类别与许多其他主题在下面将是更好的讨论。

我想要做的是在帖子第一次发布时以某种方式获取帖子的id,创建一个链接到该id的论坛类别,并在post的页面上显示到该论坛的链接。我计划在数据库中为这些通信创建一个单独的表,但是元数据表可能是一个更好的主意,我不确定。我使用bbPress插件为论坛,报纸11为主题。

我不能说我完全掌握了WordPress上的整个钩子系统,所以我现在对任何信息都开放。

EN

回答 1

WordPress Development用户

发布于 2022-03-07 15:54:16

简单地说,WordPress钩子允许您修改参数或函数输出(筛选器),或者在发生某些事情(操作)时执行自定义代码。这两种类型的钩子通常将一个或多个参数传递给附加到它们的回调函数。

在页面请求期间,WordPress通过一系列步骤来呈现页面。对于在旧法典上的典型请求中运行的操作,有一个很好的总结。要让您的自定义代码在正确的步骤中运行,您需要在操作或筛选器运行之前添加回调。

WordPress使用wp_insert_post()在数据库中插入和更新帖子。当查看函数在特拉克上的源代码时,您可以看到它里面有一堆apply_filters和do_actions。前者用于调用过滤回调,后者用于操作回调。

例如,您可以看到最后一个do_action是具有三个参数- $post_ID, $post, $updatewp_insert_post。您可以阅读源代码上的注释,也可以查看行动文件页以了解更多有关它的信息。

如何使用动作钩子的基本示例,

代码语言:javascript
复制
add_action( 'wp_insert_post', 'example_wp_insert_post', 10, 3 ); // hook, callback, priority, # of accepted args
function example_wp_insert_post( int $post_ID, WP_Post $post, bool $update ) {

  // is the post new or was this an update?
  if ( $update ) {
    // don't do anything
    return;
  }

  // was the post published?
  if ( 'publish' !== $post->post_status ) {
    // bail
    return;
  }

  // do something with ID and/or post..
  
}

需要注意的一点是,wp_insert_post()在成功时返回post ID。因此,如果您在代码中的某个地方使用它,那么您就不必费心使用钩子了--只需直接使用返回结果即可!

代码语言:javascript
复制
// somewhere in your code
$new_post_id = wp_insert_post( $postarr, $wp_error );
if ( ! is_wp_error( $new_post_id ) ) {
  // do something with the new post's ID
}
票数 1
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/403439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档