公開時に値のないカスタムフィールドを自動的に削除する

カスタムフィールドを自動生成するプラグインがいくつかあります。誰も私が "公開"を押すと自動的に空のカスタムフィールドを投稿から削除する方法を知っていますか?

私はチェックを行い、値がない場合はカスタムフィールドを削除する私のfunctions.phpに入れることができるチェック?

1

2 答え

ここに解決策があります:

add_action('save_post','my_cf_check');
function my_cf_check($post_id) {

   //verify this is not an auto save routine. 
    if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;

    //authentication checks
    if (!current_user_can('edit_post', $post_id)) return;

    //obtain custom field meta for this post
     $custom_fields = get_post_custom($post_id);

    if(!$custom_fields) return;

    foreach($custom_fields as $key=>$custom_field):
        //$custom_field is an array of values associated with $key - even if there is only one value. 
        //Filter to remove empty values.
        //Be warned this will remove anything that casts as false, e.g. 0 or false 
        //- if you don't want this, specify a callback.
        //See PHP documentation on array_filter
        $values = array_filter($custom_field);

        //After removing 'empty' fields, is array empty?
        if(empty($values)):
            delete_post_meta($post_id,$key); //Remove post's custom field
        endif;
    endforeach; 
    return;
}
2
追加された

wp_insert_post_data is a hook that happens before a database write in the admin panel. You can probably use that to call a function that checks for data, then strips out any empty custom field entries.

または、フロントエンドの the_content フックを使用して空のカスタムフィールドを削除してから削除することもできますユーザーに表示されます。

または、テーマファイルを管理している場合は、カスタムフィールドのデータを表示する前にテストすることができます。

0
追加された