Автоматическое удаление настраиваемого поля без значения при публикации - PullRequest
1 голос
/ 06 февраля 2012

У меня есть несколько плагинов, которые автоматически генерируют настраиваемые поля.Кто-нибудь знает, как автоматически удалять пустые настраиваемые поля из сообщения, когда я нажимаю «опубликовать»?

Проверка, которую я могу поставить в своем файле functions.php, который выполняет проверку и удаляет настраиваемое поле, если значение отсутствует?

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Вот решение:

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;
}
0 голосов
/ 06 февраля 2012

wp_insert_post_data - это ловушка, которая происходит перед записью базы данных в панели администратора. Вероятно, вы можете использовать это для вызова функции, которая проверяет данные, а затем удаляет все пустые записи настраиваемых полей.

Или, вы можете использовать the_content на передней панели для удаления пустых настраиваемых полей до того, как они отобразятся пользователю.

Или, если у вас есть контроль над файлами темы, вы можете просто проверить данные в своих пользовательских полях перед их отображением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...