wordpress add_action('save_post','my_function)无效

时间:2012-06-08 04:12:37

标签: wordpress wordpress-plugin wordpress-theming

我试图在wordpress中保存/更新帖子时触发一个...请看这里:

add_action('save_post', 'generate_location');

function generate_location($post_id) {   
    echo "hey"; 
}

问题是它不起作用...... 任何想法为什么?语法?

2 个答案:

答案 0 :(得分:3)

WordPress实施Post/Redirect/Get pattern以避免重复提交表单,因此您不会在echo回调中看到任何save_post'。

相反,您可以改为wp_die( 'hey' ),或者将某些内容记录到数据库或文件系统。

答案 1 :(得分:1)

我不知道你是否有这个工作,但我遇到了同样的问题,并发现了如何修复它!

在2940行(写作时)的wp-includes / post.php中,这个if / else在保存帖子时运行:

if ( !empty($page_template) && 'page' == $data['post_type'] ) {

你会注意到,如果模板出错,那么函数就会停止,而且永远不会调用save_post。

就我而言,我试图保存的帖子是从预先存在的网站导入的。新网站根本没有页面模板,因此WP仍在尝试使用之前的模板保存页面,失败,因此; save_post从未被调用过。

我添加了

/* Template Name: Default Template */

到page.php,批量编辑,选择模板并保存。从page.php中删除模板名称(因为它显示两次(现在每次都会触发save_post。

无论如何,这是我案例中的解决方案。我相信它会影响到其他人,在某个地方。