使用键盘上的回车键提交帖子编辑表单时,如何发布帖子?默认情况下,WordPress以草稿状态保存帖子。
为了提供一些背景知识,我有一个Inventory
自定义帖子类型,不使用标题或内容字段,只使用作为文本输入的元字段。简化输入Inventory
帖子,我想在作者点击回车键时发布帖子。
我比较了$_POST
编辑表单的变量以两种方式提交,并使用差异生成以下代码。但这种方法的问题是,保存/发布周围的许多操作挂钩都会被触发两次,如果您的函数与这些操作挂钩,这会很烦人。
/**
* Publish Inventory items when Enter key pressed
* @param integer $post_id Post ID
* @return void
*/
function kt_publish_inventory_item_on_enter( $post_id ) {
Global $typenow;
if ( \'inventory\' == $typenow ) {
$data = array(\'ID\' => $post_id, \'post_status\' => \'publish\' );
if ( \'auto-draft\' == $_POST[\'original_post_status\'] && \'draft\' == $_POST[\'post_status\'] ) {
$update_status = wp_update_post( $data );
}
}
}
add_action( \'acf/save_post\', \'kt_publish_inventory_item_on_enter\', 10, 1 );
SO网友:Pmpr
您可以在上添加筛选器wp_insert_post_data
:
add_filter( \'wp_insert_post_data\', \'my_force_publish_post\', 10, 2 );
function my_force_publish_post( $data, $postarr ) {
if ( ! isset($postarr[\'ID\']) || ! $postarr[\'ID\'] ) return $data;
if ( $postarr[\'post_type\'] !== \'inventory\' ) return $data;
$old = get_post( $postarr[\'ID\'] ); // the post before update
if( $old->post_status !== \'draft\' ) {
// force a post to be set as published
$data[\'post_status\'] = \'publish\'
}
return $data;
}