$conf, $runtime; function_exists('chdir') AND chdir(APP_PATH); $r = 'mysql' == $conf['cache']['type'] ? website_set('runtime', $runtime) : cache_set('runtime', $runtime); } function runtime_truncate() { global $conf; 'mysql' == $conf['cache']['type'] ? website_set('runtime', '') : cache_delete('runtime'); } register_shutdown_function('runtime_save'); ?>wp update post - wp_insert_post_data filter hook identify current action|Programmer puzzle solving
最新消息:Welcome to the puzzle paradise for programmers! Here, a well-designed puzzle awaits you. From code logic puzzles to algorithmic challenges, each level is closely centered on the programmer's expertise and skills. Whether you're a novice programmer or an experienced tech guru, you'll find your own challenges on this site. In the process of solving puzzles, you can not only exercise your thinking skills, but also deepen your understanding and application of programming knowledge. Come to start this puzzle journey full of wisdom and challenges, with many programmers to compete with each other and show your programming wisdom! Translated with DeepL.com (free version)

wp update post - wp_insert_post_data filter hook identify current action

matteradmin9PV0评论

I have this function to set the title of a wordpress post which works properly for saving / updating posts. The major issue is that the function stops posts being deleted (it removes the title but the post still exists).

Is there a way to identify if the action is a delete post rather than save / update post and obviously i don't return the $data if a delete action?

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;
}

I have this function to set the title of a wordpress post which works properly for saving / updating posts. The major issue is that the function stops posts being deleted (it removes the title but the post still exists).

Is there a way to identify if the action is a delete post rather than save / update post and obviously i don't return the $data if a delete action?

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;
}
Share Improve this question asked Oct 11, 2014 at 16:58 DavidDavid 1231 silver badge6 bronze badges
Add a comment  | 

2 Answers 2

Reset to default 1

Not sure, but seems maybe $data['post_status'] would be set to 'trash' at that point. If so, then you could just do something like...

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

...before the other manipulations.

EDIT

That code should work then - but needs to be at top of the function, like...

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;
}

Your function in that case would simply return back the $data without making any other modifications to it.

Try the save_post hook instead of wp_insert_post_data.

It should solve your problem

Post a comment

comment list (0)

  1. No comments so far