[wp-hackers] Setting custom taxonomy on the fly

Dougal Campbell dougal at gunters.org
Sun Apr 17 17:49:00 UTC 2011

On Apr 17 2011 1:41 PM, Otto wrote:
> On Sun, Apr 17, 2011 at 11:49 AM, Dougal Campbell<dougal at gunters.org>  wrote:
>> So that leaves us with just a couple of other opportunities to act: the
>> 'wp_insert_post_data' filter, and the 'wp_insert_post' action. With the
>> filter, I can detect my sentinel string and strip it back out of the post,
>> but I can't set the post_format, because we don't have a post_ID yet. But if
>> we get all the way to the 'wp_insert_post' action, updating the post content
>> to strip out the sentinel is a problem, because using wp_update_post() will
>> in turn call wp_insert_post(), which is a recursive loop.
> Why not just use both?
> add_filter('wp_insert_post_data','strip_content');
> function strip_content($data) {
>    global $my_format;
>    // detect format in $data['post_content'] and modify it
>    // set $my_format = detected-format;
>    return $data;
> }
> add_action('wp_insert_post','add_format');
> function add_format($post_ID) {
>    global $my_format;
>    set_post_format($post_ID, $my_format);
> }

That's the work-around I came up with. It's just uglier than it needs to 
be. An appropriately placed filter would make this much easier for 
developers in the future. And if it was a filter on the arguments before 
the extract() in wp_insert_post(), it would be generic enough to handle 
arbitrary custom taxonomies (not just post formats), just by adding the 
'tax_input' key to the array, with appropriate term data.

Dougal Campbell <dougal at gunters.org>

More information about the wp-hackers mailing list