如何连接到PUBLISH_POSTTYPE?

时间:2013-01-14 作者:Jerry Tunin

我正试图加入WordPress publish。下面的代码是我正在使用的,但它似乎没有运行。我在一个插件文件中有它,每次我进行更改时都会停用/重新激活它(但不确定是否有必要这样做)。帖子类型为“拍卖”。

add_action( \'publish_auction\', \'bvf_set_ceiling_once_on_first_publish\' );

function bvf_set_ceiling_once_on_first_publish( $post ) {

    $post_id = $post->ID;

    if ( !get_post_meta( $post_id, \'ceiling\', $single = true ) ) {

    $reserve = get_post_meta( $post_id, \'reserve\', $single = true );

    $ceiling = $reserve * (rand(40,60) / 100);

    update_post_meta( $post_id, \'ceiling\', $ceiling );

    }
}
现在我正在尝试以下内容(2013年1月16日):

<?php
/**
 * @package Bids_Views
 * @version 0.0.1
 */
/*
Plugin Name: Bids/Views
Description: None
Author: Jerry T.    
Version: 0.0.1
*/

add_action(\'publish_post\', \'bvf_set_ceiling\');
function bvf_set_ceiling( $post_id ) {

$post = get_post($post_id);

$reserve = get_post_meta( $post_id, \'reserve\', true );

$ceiling = $reserve * (rand(40,60) / 100);

update_post_meta( $post_id, \'ceiling\', $ceiling );

}

?>

3 个回复
SO网友:diggy

功能看起来很好,$single = true 可能导致您的问题,请将其替换为true

SO网友:bueltge

函数可以使用post id作为参数,而不是数组或对象。用“var\\u dump($post)”检查这一点;退出;\'在函数的第一行。

也可以使用默认挂钩。一个未经测试的小示例,在移动设备上从头开始编写。

add_action(\'publish_post\', \'my-function-on-publish\');
function my-function-on-publish( $post_id ) {

    $post = get_post($post_id);

    if (\'auction\' === $post->post_type ) {
        //My function
    }
}

SO网友:Ptitsuisse

这是因为当您发布帖子并调用“publish\\u post”时,帖子元尚未保存在数据库中。update\\u post\\u meta()(在数据库中保存post meta的函数)在“publish\\u post”之后调用。

请参见此处的工作:How to access the post meta of a post that has just been published?

结束

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。