WP_INSERT_POST_DATA过滤器挂钩标识当前操作

时间:2014-10-11 作者:David

我有这个功能来设置wordpress帖子的标题,它可以正确地保存/更新帖子。主要问题是该函数会阻止删除帖子(它会删除标题,但帖子仍然存在)。

是否有办法确定该操作是否是删除帖子而不是保存/更新帖子,并且如果是删除操作,显然我不会返回$数据?

add_filter( \'wp_insert_post_data\', array($this, \'updatetitle\' ) , \'99\', 1 ); 

public function updatetitle($data) {

    if($data[\'post_type\'] != $property->post_name || !$_POST[${$this->active_class_var_name}->noncefield] ):
        return $data;
    endif;  

    if($_POST[\'address\'] && $_POST[$property->noncefield]):
        $data[\'post_title\']= ucfirst (sanitize_text_field($_POST[\'address\'])).\' \'.ucfirst (sanitize_text_field($_POST[\'town\'])).\' \'.ucfirst (sanitize_text_field($_POST[\'county\']) );
    endif;

    return $data;
}

2 个回复
SO网友:Philip Light

不确定,但似乎$data[\'post\\u status\']此时可能会设置为“垃圾”。如果是这样,那么你可以做一些像。。。

if ($data[\'post_status\'] == \'trash\') { return $data; }
。。。在其他操作之前。

EDIT

该代码应该可以工作,但需要位于函数的顶部,如。。。

public function updatetitle($data) {

    if ($data[\'post_status\'] == \'trash\') { return $data; }

    if($data[\'post_type\'] != $property->post_name || !$_POST[${$this->active_class_var_name}->noncefield] ):
        return $data;
    endif;  

    if($_POST[\'address\'] && $_POST[$property->noncefield]):
        $data[\'post_title\']= ucfirst(sanitize_text_field($_POST[\'address\'])).\' \'.
            ucfirst (sanitize_text_field($_POST[\'town\'])).\' \'.
            ucfirst (sanitize_text_field($_POST[\'county\']) );
    endif;

    return $data;
}
在这种情况下,您的函数只需返回$数据,而无需对其进行任何其他修改。

SO网友:Julien Klepatch

尝试save_post 钩子代替wp_insert_post_data.

它应该能解决你的问题

结束

相关推荐

注意:未定义索引:SUPPRESS_FILTERS

我正在做一个主题的除虫工作,我希望有人能帮助我。我使用JustinTadlock创建的这个函数在博客页面上显示自定义帖子类型,并且将wp debug设置为true,我会收到一个通知:未定义索引:suppress\\u filters消息。代码如下:// Custom Post Type for the public blog posts to show on Index or blog page add_filter( \'pre_get_posts\', \'my_get_posts\' );&