예제 #1
0
 function wp_post_revision_fields($fields, $post = null)
 {
     // validate page
     if (acf_is_screen('revision') || acf_is_ajax('get-revision-diffs')) {
         // allow
     } else {
         // bail early (most likely saving a post)
         return $fields;
     }
     // vars
     $append = array();
     $order = array();
     $post_id = acf_maybe_get($post, 'ID');
     // compatibility with WP < 4.5 (test)
     if (!$post_id) {
         global $post;
         $post_id = $post->ID;
     }
     // get all postmeta
     $meta = get_post_meta($post_id);
     // bail early if no meta
     if (!$meta) {
         return $fields;
     }
     // loop
     foreach ($meta as $name => $value) {
         // attempt to find key value
         $key = acf_maybe_get($meta, '_' . $name);
         // bail ealry if no key
         if (!$key) {
             continue;
         }
         // update vars
         $value = $value[0];
         $key = $key[0];
         // bail early if $key is a not a field_key
         if (!acf_is_field_key($key)) {
             continue;
         }
         // get field
         $field = acf_get_field($key);
         $field_title = $field['label'] . ' (' . $name . ')';
         $field_order = $field['menu_order'];
         $ancestors = acf_get_field_ancestors($field);
         // ancestors
         if (!empty($ancestors)) {
             // vars
             $count = count($ancestors);
             $oldest = acf_get_field($ancestors[$count - 1]);
             // update vars
             $field_title = str_repeat('- ', $count) . $field_title;
             $field_order = $oldest['menu_order'] . '.1';
         }
         // append
         $append[$name] = $field_title;
         $order[$name] = $field_order;
         // hook into specific revision field filter and return local value
         add_filter("_wp_post_revision_field_{$name}", array($this, 'wp_post_revision_field'), 10, 4);
     }
     // append
     if (!empty($append)) {
         // vars
         $prefix = '_';
         // add prefix
         $append = acf_add_array_key_prefix($append, $prefix);
         $order = acf_add_array_key_prefix($order, $prefix);
         // sort by name (orders sub field values correctly)
         array_multisort($order, $append);
         // remove prefix
         $append = acf_remove_array_key_prefix($append, $prefix);
         // append
         $fields = $fields + $append;
     }
     // return
     return $fields;
 }
예제 #2
0
function acf_enqueue_uploader()
{
    // bail early if doing ajax
    if (acf_is_ajax()) {
        return;
    }
    // bail ealry if already run
    if (acf_has_done('enqueue_uploader')) {
        return;
    }
    // enqueue media if user can upload
    if (current_user_can('upload_files')) {
        wp_enqueue_media();
    }
    // create dummy editor
    ?>
<div class="acf-hidden"><?php 
    wp_editor('', 'acf_content');
    ?>
</div><?php 
}