发布POST时执行函数

时间:2012-10-18 作者:andeersg

我尝试使用我在第一次发布帖子时创建的这个函数。

function a_new_post($post){
  $post_id = $post->ID;

  if ( !get_post_meta( $post_id, \'firstpublish\', $single = true ) ) {
      // ...run code once
      update_post_meta( $post_id, \'firstpublish\', true );
  }
}
add_action( \'draft_to_published\', \'a_new_post\' );
我看不出有什么问题,但当我尝试创建一些示例帖子时,我检查了数据库,但“firstpublished”字段尚未创建。

有人认为有什么不对吗?

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

正确的操作是\'draft_to_publish\'.

为确保使用了正确的状态,请尝试获取所有已注册帖子状态(包括自定义状态)的列表,包括:

<pre><?php print \'- \' . implode( "\\n- ", array_keys( get_post_stati() ) );?></pre>
在普通安装中,您应该获得:

发布未来草案待决私有垃圾自动草案publish_post 每次编辑已发布的帖子时调用。

另请注意get_post_stati() 是WordPress中不可预测的名字之一:这是完全错误的。名词status的复数在英语中是status,在拉丁语中是statusD

你也可以\'transition_post_status\', 根据您的需要。将新状态和旧状态作为参数,第三个参数是post对象。它会抓住future_to_publish 同样,还有曾经被丢弃,现在重新发布的帖子(trash_to_publish).

示例:

add_action( \'transition_post_status\', \'a_new_post\', 10, 3 );

function a_new_post( $new_status, $old_status, $post )
{
    if ( \'publish\' !== $new_status or \'publish\' === $old_status )
        return;

    if ( \'post\' !== $post->post_type )
        return; // restrict the filter to a specific post type

    // do something awesome
}

SO网友:Ravi Patel

发布第一次保存时间元值集,以便在第一次使用时轻松应用。

function a_new_post( $post_id, $post, $update ) {
    if ( !get_post_meta( $post_id, \'firstpublish\', $single = true ) ) {
        update_post_meta( $post_id, \'firstpublish\', true );
    }
}
add_action( \'save_post\', \'a_new_post\', 10, 3 );

结束

相关推荐

limit posts per page

我正在处理类别。php。我让我的帖子返回我想要的方式,我正在按照我想要的方式获取子类别,但现在我正在尝试添加分页,并将帖子数量限制为3篇。当我运行测试时,第四条帖子出现在页面上。我原以为只有3个,分页在底部。我不知道怎么了。根据法典,这应该是可行的。 $allcats = get_categories(\'child_of=\'.get_query_var(\'cat\')); foreach ($allcats as $cat) : $args = array( \'cate