发布帖子操作不起作用

时间:2016-11-03 作者:Sandun

我的自定义插件中有以下代码。Link is a custom post type.

function post_published_notification( $ID, $post ) {
    //Something
}
add_action( \'publish_link\', \'post_published_notification\', 10, 2 );
当我通过WordPress仪表板发布/更新链接时,这很好用。

但当我在编程中使用wp_publish_post( $post_id ).

为什么会这样?如何使其工作?

1 个回复
最合适的回答,由SO网友:jgraup 整理而成

wp_publish_post - 通过转换帖子状态发布帖子。

Note: 此函数除了转换post状态外,不执行任何操作。如果要确保设置了post\\u名称,请使用wp_update_post() 相反

<小时/>publish_{$custom_post_type} - publish\\u post是一种在发布帖子时触发的操作,或者如果对其进行了编辑并且状态更改为publish,则会触发该操作。

运行后


wp_publish_post 触发了一些事件:

do\\u操作(\'edit\\u post\',$post->;ID,$post)

  • do\\u操作(“save\\u post{$post->;post\\u type},$post->;ID,$post,true)
  • 执行操作(\'save\\u post\',$post->;ID,$post,true)执行操作(\'wp\\u insert\\u post\',$post->;ID,$post,true)
  • wp_transition_post_status(“publish”,$old\\u status,$post)
    • do\\u操作(\'transition\\u post\\u status\',$new\\u status,$old\\u status,$post)
    • do\\u action(“{$old\\u status}to{$new\\u status}”,$post)
    • 执行操作(“{$new\\u status}{$post->;post\\u type},$post->;ID,$post)\'publish_link\' 应该有用,因为它符合模式

      "{$new_status}_{$post->post_type}"
      
      参考资料


      500 Error

      对于sideload问题,只需创建一个带有一些默认参数的函数,这样就可以获得sideload所需的所有参数。

      function sideload_media_file($url = \'\', $post_id = NULL, $desc = NULL, $return = \'src\') {
          require_once(ABSPATH . \'wp-admin/includes/media.php\');
          require_once(ABSPATH . \'wp-admin/includes/file.php\');
          require_once(ABSPATH . \'wp-admin/includes/image.php\');
      
          return media_sideload_image( $url, $post_id, $desc, $return);
      }
      
      sideload_media_file($url, NULL, NULL, \'src\');