Questions tagged «save-post»

save_post是创建或更新帖子或页面时触发的操作,该操作可以来自导入,帖子/页面编辑表单,xmlrpc或通过电子邮件发布。帖子的数据存储在$ _POST,$ _ GET或全局$ post_data中,具体取决于帖子的编辑方式。

1
为什么创建新帖子时会触发save_post动作?
save_post当我单击“管理仪表盘”中的“新帖子”链接时,我已添加到动作上的功能就会触发,这让我感到惊讶。注意-这是在我按下Save或之前Update,并且它会立即触发,而不是经过一段时间或自动更新之后。 另一方面,当我键入一些内容并按Publish或Update或Save Draft按钮时,我在动作处理程序中放入的echo语句不会回显,因此看来该动作在任何其他时间均未触发。这可能是无关的。 这是我的代码: add_action('save_post', 'MyNS\save_event_metabox', 10, 2); function save_event_metabox($post_id, $post){ echo "<h1>YES!</h1>"; } 这是回声(在页面的顶部)时,我按下了“新帖”链接,但是当我输入一些东西,然后按不回Update或Publish或Save Draft。这似乎与有关save_post操作和wp_insert_post()功能的文档相矛盾。 谁能为我解决这个问题?

7
保存自定义字段时添加验证和错误处理?
我有一个在帖子类型上定义自定义字段的函数。假设该字段为“副标题”。 保存帖子后,我想对输入内容进行一些验证,并在必要时在帖子编辑屏幕上显示错误消息。就像是: // Handle post updating function wpse_update_post_custom_values($post_id, $post) { // Do some checking... if($_POST['subhead'] != 'value i expect') { // Add an error here $errors->add('oops', 'There was an error.'); } return $errors; } add_action('save_post','wpse_update_post_custom_values',1,2); 我试图将其挂钩到save_post动作,但是我不知道如何处理错误。似乎没有错误对象传递到函数中,并且如果我创建自己的WP_Error obj并将其返回,则无论哪种机制都不会在后期编辑页面上吐出错误,因此不会尊重它。 我目前在我的自定义meta框内有一个页面错误消息,但这并不理想-我宁愿有一个大的,红色的,最顶部的错误,如WP通常显示。 有任何想法吗? 更新: 根据@Denis的回答,我尝试了一些不同的方法。将错误存储为全局变量是行不通的,因为Wordpress在save_post过程中进行了重定向,这会在显示全局变量之前将其杀死。 我最终将它们存储在meta字段中。问题是您需要清除它们,否则当您导航到另一个页面时它们不会消失,因此我不得不在admin_footer上附加另一个函数,以清除错误。 我不会期望这么常见的错误处理(更新帖子)会很笨拙。我是否缺少明显的东西,或者这是最好的方法? // Handle post updating function wpse_5102_update_post_custom_values($post_id, $post) …



2
什么是正确的钩子时更新帖子
我尝试在更新帖子时挂机,但我尝试执行的所有挂机都从未执行过 updated_post_meta add_action('updated_post_meta', 'my_function'); function my_function($post_id) { echo 'This is my post ID : '.$post_id; } 我已经尝试过了,add_action('save_post', 'my_function');但是没有回显任何id,或者也许此消息已经回显,但是由于发送了重定向标头而从不呈现。
19 php  hooks  actions  save-post 

5
如果未填写自定义字段,则阻止发布帖子
我有一个自定义帖子类型Event,其中包含开始和结束日期/时间自定义字段(作为帖子编辑屏幕中的元框)。 我想确保没有填写日期就无法发布(或安排)活动,因为这将导致显示事件数据的模板出现问题(除了这是必不可少的事实!)。但是,我希望能够在准备中的“草稿”事件中包含无效的日期。 我本来想通过挂钩save_post进行检查,但是如何防止状态更改发生呢? EDIT1:这是我现在用来保存post_meta的钩子。 // Save the Metabox Data function ep_eventposts_save_meta( $post_id, $post ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return; if ( !isset( $_POST['ep_eventposts_nonce'] ) ) return; if ( !wp_verify_nonce( $_POST['ep_eventposts_nonce'], plugin_basename( __FILE__ ) ) ) return; // Is the user allowed to edit the post …

4
使用save_post替换帖子标题
我正在使用自定义帖子,在这些文章中,我不需要标题。 这将导致Wordpress将我的帖子标题设置为“自动草稿”。 我想将标题的值更改为其他值,该值是根据帖子中的其他字段计算得出的。 我该如何使用save_post或其他方式进行操作?

2
如何避免save_post回调中的无限循环
我一直在使用这个网站来解决我的问题,但是这次我没有成功找到并回答我的问题。 wp_update_post在调用on的函数内部使用时,出现无限循环save_post。我知道这是一个普遍的问题,但是我不知道该如何避免。 我想保存帖子的顺序(属于帖子类型“部分”)。因此,我制作了一个自定义元框,其中包含一些可排序的html元素。在每个元素中都有一个名称为'sectionorder []'的隐藏输入标签。因此,当我单击标准WordPress“更新”按钮时,包含所有帖子ID的数组(按顺序)是通过POST发送的。所以这是我检索数组并想要保存顺序的代码: // Update section sort order $sectionorder = $_POST['sectionorder']; if (isset($sectionorder)) { // Avoid error if there is no sections added yet foreach( $sectionorder as $no => $sectionID ) { $post_update = array(); $post_update['ID'] = $sectionID; $post_update['menu_order'] = $no; wp_update_post( $post_update ); } } 但是问题在于它开始了无限循环。如何避免这种情况?也许我可以用完全不同的方式来做? 寻求您的帮助!

2
带有复选框的元框未更新
我试图设置一个具有单个复选框的meta_box,但一切正常,但是,如果我取消选中它并保存帖子,它将再次标记为选中状态,我一直在查看,但找不到错误。 看看我的代码。 function am_checkbox_option() { global $post; $custom = get_post_custom($post->ID); $front_event = $custom["front_event"][0]; wp_nonce_field(__FILE__, 'am_front_event'); if ( $front_event ) { $checked = "checked=\"checked\""; } else { $checked = ""; } ?> <label>Display Content? (type yes):</label> <input type="checkbox" name="front_event" value="true" <?php echo $checked; ?> /> <?php } } add_action('save_post', function() { …


2
在DOING_AUTOSAVE时返回$ post_id?
我在该站点以及其他地方一遍又一遍地看到以下模式: add_action( 'save_post', 'wpse14169_save_post' ); function wpse14169_save_post( $post_id ) { if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return $post_id; } // Other code... } 我为什么要回来$post_id?save_post是一个动作,并且忽略动作处理程序的返回值。WordPress核心本身也不做。 Codex示例确实返回$post_id,但它不是Codex 中的第一行错误(或过时)行。 我想念什么吗?我需要返回$post_id吗?有需要的时候吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.