Chỉnh sửa nhanh tùy chỉnh màn hình


7

Có thể trùng lặp: Làm cách nào để hiển thị hộp meta tùy chỉnh trên màn hình "Chỉnh sửa nhanh"?

Tôi đang cố gắng chỉnh sửa màn hình chỉnh sửa nhanh trên "khách truy cập" loại bài đăng tùy chỉnh của mình để tôi có thể thêm một số tùy chọn cho người dùng cuối của mình. Loại bài đăng tùy chỉnh của tôi không yêu cầu / cần ngày đăng, mật khẩu để xem, xuất bản trạng thái hoặc hộp phân loại lớn cho các danh mục khách truy cập tùy chỉnh trên đó.

Tôi đã thêm một hộp meta tùy chỉnh cho trang chỉnh sửa thực tế, nhưng muốn kích hoạt hỗ trợ chỉnh sửa nhanh các trường meta bài đăng đó trong khi vô hiệu hóa các tùy chọn chỉnh sửa nhanh hiện tại.

Tôi cũng tìm thấy một bài đăng (được liên kết trong bản sao có thể của tôi) trên các diễn đàn của wordpress.org, nhưng không chắc chắn chính xác những gì nó làm.

Câu trả lời:


6

Tôi sử dụng điều này để thêm các trường mẫu để chỉnh sửa nhanh. Nó không hoàn toàn dễ dàng để làm điều này trong WP (chưa) và có thể rất khó để tìm thấy thông tin về cách thực hiện. Bạn phải thực sự đào qua nguồn để tìm thấy nó quá.

Thêm trường biểu mẫu để chỉnh sửa nhanh

<?php
add_action('quick_edit_custom_box', 'quickedit_posts_custom_box', 10, 2);
add_action('admin_head-edit.php', 'quick_add_script');

function quickedit_posts_custom_box( $col, $type ) {
    if( $col != 'COLUMN_NAME' || $type != 'post' ) {
        return;
    } ?>
    <fieldset class="inline-edit-col-right"><div class="inline-edit-col">
        <div class="inline-edit-group">
            <label class="alignleft">
                <input type="checkbox" name="yourformfield" id="yourformfield_check">
                <span class="checkbox-title">This Post Has Cake</span>
            </label>
        </div>
    </fieldset>
    <?php
}

function quick_add_script() { ?>
    <script type="text/javascript">
    jQuery(document).ready(function() {
        jQuery('a.editinline').live('click', function() {
            var id = inlineEditPost.getId(this);
            var val = parseInt(jQuery('#inline_' + id + '_yourformfield').text());
            jQuery('#yourformfield_check').attr('checked', !!val);
        });
    });
    </script>
    <?php
}

2
Tôi đã đọc nó, nhưng tôi không hiểu; làm thế nào có thể đặt hộp kiểm, nếu dữ liệu meta bài đăng trên cơ sở dữ liệu; get_meta_data () chỉ có thể sử dụng được trong php; có lẽ bạn có một gợi ý hoặc giải pháp cho tôi. Hiện tại là ví dụ của bạn rất hay, nhưng tôi không hiểu ID #inline_ '+ id +' _yourformfield; đây là đâu; và là ID toàn cầu từ WP. Tôi đã thêm nhiều hộp kiểm và als hoạt động tốt để lưu dữ liệu, nhưng tôi không tìm thấy giải pháp để xem hộp kiểm đã chọn. Cảm ơn nhiều!
bueltge

0

Tôi đang thực hiện một số hoạt động khai thác sừng của riêng mình ở đây, nhưng để chỉnh sửa các trường meta tùy chỉnh trong WordPress dễ dàng hơn, tôi đã viết một plugin có tên là Hàng loạt tùy chỉnh / Chỉnh sửa nhanh .

Plugin này không chỉ thêm meta tùy chỉnh vào màn hình Chỉnh sửa hàng loạt và Chỉnh sửa nhanh để chỉnh sửa thực tế mà còn dưới dạng cột cho danh sách loại bài đăng.

Sau đó, sử dụng chủ đề hoặc plugin đang sử dụng chưa kích hoạt meta tùy chỉnh cho các cột loại bài đăng, bạn có thể sử dụng bộ lọc để thêm các cột của mình.

Trong functions.phptập tin chủ đề của bạn thêm mã tương tự như sau.

add_filter( 'manage_post_posts_columns', 'my_manage_post_posts_columns' );
function my_manage_post_posts_columns( $columns ) {
$columns['custom_stuff'] = esc_html__( 'Custom Stuff Here' );

return $columns;
}

Như một ví dụ về làm việc với một loại bài tùy chỉnh có tên news-room, hãy thử như sau.

add_filter( 'manage_news-room_posts_columns', 'my_manage_newsroom_posts_columns' );
function my_manage_newsroom_posts_columns( $columns ) {
$columns['wpcf-publication-author'] = esc_html__( 'Publication Author');
$columns['wpcf-newsroom-type']      = esc_html__( 'News Room Type');
$columns['_views_template']         = esc_html__( 'Content Template');

return $columns;
}

Điều này dựa trên bộ lọc quản lý _ $ {post_type} _posts_columns cho postloại bài đăng.

Xin lưu ý rằng để giúp phát triển và hỗ trợ thêm, plugin miễn phí được giới hạn ở các loại bài đăng tích hợp của riêng WordPress. Nếu bạn đang làm việc với loại bài đăng tùy chỉnh, bạn có thể mua Premium hàng loạt / Chỉnh sửa nhanh tùy chỉnh.

Thay phiên, bạn có thể trích xuất mã ra khỏi plugin thông qua https://github.com/michael-cannon/custom-bulkquick-edit .


0

Thêm mã này vào functions.phptập tin của bạn . Mã này được sử dụng cho lịch trình loại bài tùy chỉnh. Thay đổi loại bài theo nhu cầu của bạn.

// Add to our admin_init function

add_filter('manage_schedule_posts_columns', 'myown_add_post_columns');

function myown_add_post_columns($columns) {
    $columns['stime'] = 'Start Time';
   $columns['etime'] = 'End Time';
    return $columns;
}

// Add to our admin_init function

add_action('manage_schedule_posts_custom_column', 'myown_render_post_columns', 10, 2);

function myown_render_post_columns($column_name, $id) {
    switch ($column_name) {
    case 'stime':
        // show my_field
        echo get_post_meta( $id, 'stime', TRUE);

case 'etime':
        // show my_field
        $my_fieldvalue1 = get_post_meta( $id, 'etime', TRUE);
        echo $my_fieldvalue1;
    }
}

// Add to our admin_init function

add_action('quick_edit_custom_box',  'myown_add_quick_edit', 10, 2);

function myown_add_quick_edit($column_name, $post_type) {
    if ($column_name != 'stime') return;
    ?>
    <fieldset class="inline-edit-col-left">
        <div class="inline-edit-col">
            <span class="title">start time</span>
            <input id="myfield_noncename" type="hidden" name="myfield_noncename" value="" />
            <input id="myfield" type="text" name="stime" value=""/></br>
         <span class="title">End time</span>
       <input id="myfield1" type="text" name="etime" value=""/></br>
        <div id="main">
         <span class="title">Add New Session date</span></br>
       <a href="#" class="aclick">Add new</a></br></div>
        </div>
    </fieldset>
     <?php
}

// Add to our admin_init function 

add_action('save_post', 'myown_save_quick_edit_data');   

function myown_save_quick_edit_data($post_id) {     
  // verify if this is an auto save routine.         
  if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )          
      return $post_id;         
  // Check permissions     
  if ( 'stime' == $_POST['post_type'] ) {         
    if ( !current_user_can( 'edit_page', $post_id ) )             
      return $post_id;     
  } 
if ( 'etime' == $_POST['post_type'] ) {         
    if ( !current_user_can( 'edit_page', $post_id ) )             
      return $post_id;     
  } 
else {         
    if ( !current_user_can( 'edit_post', $post_id ) )         
    return $post_id;     
  }        
if(isset($_POST['tag-name']))
{
 if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return;
  $post = get_post($post_id);
  if ( $post->post_type == 'schedule') { // change 'post' to any cpt you want to target
    $term = get_term_by('slug', $post->post_name, 'schedule_category');
    if ( empty($term) ) {
      $add = wp_insert_term( $_POST['tag-name'], 'schedule_category', array('slug'=> $_POST['tag-name']) );
      if ( is_array($add) && isset($add['term_id']) ) {
        wp_set_object_terms($post_id, $add['term_id'], 'schedule_category', true );
      }
    }
  }
}

 // Authentication passed now we save the data   

  if (isset($_POST['stime']) && ($post->post_type != 'revision')) {
        $my_fieldvalue = esc_attr($_POST['stime']);
        if ($my_fieldvalue)
            update_post_meta( $post_id, 'stime', $my_fieldvalue);
        else
            delete_post_meta( $post_id, 'stime');
    }
    return $my_fieldvalue;
 if (isset($_POST['etime']) && ($post->post_type != 'revision')) {
        $my_fieldvalue1 = esc_attr($_POST['etime']);
        if ($my_fieldvalue1)
            update_post_meta( $post_id, 'etime', $my_fieldvalue1);
        else
            delete_post_meta( $post_id, 'etime');
    }
    return $my_fieldvalue1;
}

// Add to our admin_init function

add_action('admin_footer', 'myown_quick_edit_javascript');

function myown_quick_edit_javascript() {
    global $current_screen;
    if (($current_screen->post_type != 'schedule')) return;

    ?>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery(".aclick").one("click", function(){  
   jQuery("#main").append('<input type="text" name="tag-name" />');
});
});
function set_myfield_value(fieldValue,fieldValue1, nonce) {
        // refresh the quick menu properly
        inlineEditPost.revert();
        console.log(fieldValue);
        console.log(fieldValue1);
        jQuery('#myfield').val(fieldValue);
         jQuery('#myfield1').val(fieldValue1);
}
</script>
 <?php 
}

// Add to our admin_init function 

add_filter('post_row_actions', 'myown_expand_quick_edit_link', 10, 2);   
function myown_expand_quick_edit_link($actions, $post) {     
    global $current_screen;     
    if (($current_screen->post_type != 'schedule')) 
        return $actions;
    $nonce = wp_create_nonce( 'myfield_'.$post->ID);
    $myfielvalue = get_post_meta( $post->ID, 'stime', TRUE);
    $myfielvalue1 = get_post_meta( $post->ID, 'etime', TRUE);
    $actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="';     
    $actions['inline hide-if-no-js'] .= esc_attr( __( 'Edit this item inline' ) ) . '"';
    $actions['inline hide-if-no-js'] .= " onclick=\"set_myfield_value('{$myfielvalue}','{$myfielvalue1}')\" >";
    $actions['inline hide-if-no-js'] .= __( 'Quick Edit' );
    $actions['inline hide-if-no-js'] .= '</a>';
    return $actions;
}

Ngoài ra, xin vui lòng đọc ý kiến ​​của tôi cho câu hỏi của bạn về việc chỉnh sửa bài viết của bạn. Mã của bạn là một mớ hỗn độn không thể đọc được và đó không phải là công việc của người khác để dọn dẹp sau bạn, bạn có trách nhiệm chỉnh sửa bài đăng của mình một cách hợp lý
Pieter Goosen

2
Nếu đây một câu trả lời, xin vui lòng làm sạch nó. Xem cách trả lời
Pieter Goosen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.