在自定义发布类型发布时自动插入自定义字段

时间:2011-04-15 作者:Bryan Mc

我正在寻找一种在发布自定义帖子类型时自动插入自定义字段的方法。我反复地从这里找到了同样的解决方案:

http://pippinspages.com/tutorials/publish-action-hook-for-custom-post-types/

我试过这个,但出于某种原因,它对我不起作用。我有一个名为sales\\u pages的自定义帖子类型

这是我的代码:

// function to be executed when a custom post type is published
function run_when_post_published($post_ID)
{
    // your function code here
    global $wpdb;
      if(!wp_is_post_revision($post_ID)) {
      add_post_meta($post_ID, \'field-name\', \'custom value\', true);
      }
}

// replace {custom_post_type_name} with the name of your post type
add_action(\'new_to_publish_sales_pages\', \'run_when_post_published\');    
add_action(\'draft_to_publish_sales_pages\', \'run_when_post_published\');    
add_action(\'pending_to_publish_sales_pages\', \'run_when_post_published\');
你能告诉我这有什么问题吗?

我已经用常规帖子证实了这一点(当然是用帖子发布挂钩)。它只是对我的自定义帖子类型做了不同的处理。

提前感谢您的建议。

干杯,布莱恩

4 个回复
SO网友:Otto

没有{$old\\u status}到{$new\\u status}{$post\\u type}操作挂钩。检查wp\\u transition\\u post\\u status函数,查看可以在那里使用哪些类型的挂钩。

相反,只需使用通用的transition\\u post\\u状态挂钩。它获取旧的和新的状态(以便您可以检查状态的更改)以及$post对象本身,以便您检查$post->post\\U类型。

SO网友:Hameedullah Khan

正如Otto所说,没有${old\\u status}to${new\\u status}{uu${post\\u type}操作挂钩,但可以使用new\\u to\\u publish、draft\\u to\\u publish和pending\\u to\\u publish在自定义帖子上添加帖子元。

// function to be executed when a custom post type is published
function run_when_post_published($post)
{
    // your function code here
    global $wpdb;
      if(!wp_is_post_revision($post->ID) && $post->post_type == \'sales_pages\') {
      add_post_meta($post->ID, \'field-name\', \'custom value\', true);
      }
}

// replace {custom_post_type_name} with the name of your post type
add_action(\'new_to_publish\', \'run_when_post_published\');    
add_action(\'draft_to_publish\', \'run_when_post_published\');    
add_action(\'pending_to_publish\', \'run_when_post_published\');

SO网友:BigToe

虽然我不是专家,但这里有几个想法:

您是否尝试过更新\\u post\\u meta而不是添加\\u post\\u meta?如果自定义字段已经存在,add\\u post\\u meta可能不会有任何效果。

您确定sales\\u pages是“post slug”,它不一定与自定义帖子类型的名称相同吗?我记得我努力想弄清楚什么是“后鼻涕虫”。不幸的是,我忘记了答案。

SO网友:MZAweb

你应该钩住post_save 检查几件事:

这是您的自定义帖子类型,它不是自动保存,也不是修订版,类似于:

add_action(\'save_post\', \'my_custom_save\');

function my_custom_save( $post_id ){

    if ( defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE ) 
        return $post_id;

    if ( \'your_custom_post_type\' == $_POST[\'post_type\'] ){

            if (!wp_is_post_revision($post_id)){

                add_post_meta($post_ID, \'field-name\', \'custom value\', true);

            }
    }

}

结束

相关推荐