2012-11-16 11 views
5

से कस्टम कॉलम व्यवस्थापक लिंक ले जाएं ऐसा लगता है कि मैं संपादित नहीं कर सकता कि वर्डप्रेस के बैकएंड में मेरे कस्टम कॉलम में से किसी एक को संपादित, निकालने, देखने, आदि को कैसे जोड़ना है। विचार है कि शीर्षक से जुड़े लिंक प्राप्त करें जब कोई शीर्षक पर हो जाता है, एक अलग कॉलम से जुड़ा होता है।नीचे "पोस्ट शीर्षक"

यह नीचे कोड आउटपुट है।

यही वह है जो मैं लेखकों के कॉलम में लिंक चाहता हूं जब माउस लेखकों पर आच्छादित हो, जैसे कि आप इस स्क्रीनशॉट में शीर्षक पर होवर करते हैं; सभी संपादन लिंक। मैं वास्तव में संदेह कि से निपटने के लिए एक हुक है कि

add_filter('manage_edit-testimonial-quotes_columns', 'view_columns') ; 
function view_columns($columns) { 
    $columns = array(
    'cb' => '', 
    'date' => __('Date'), 
    'tq_author' => __('Author'), 
    'tq_quote' => __('Testimonial'), 
); 
    return $columns; 
} 
add_action('manage_testimonial-quotes_posts_custom_column', 'custom_view_columns', 10, 2); 
function custom_view_columns($column, $post_id){ 
global $post; 
    switch ($column){ 
    case 'tq_author': 
    echo '<a href="post.php?post=' . $post->ID . '&action=edit">'; 
    $column_content = the_field('tq_author'); 
    echo $column_content; 
    echo '</a>'; 
    break; 
    case 'tq_quote': 
    $column_content = the_field('tq_quote'); 
    echo $column_content; 
    break; 
    default: 
    break; 
    } 
} 
+0

ऐसा लगता है कि डिफ़ॉल्ट मामले से पहले एक ** ब्रेक ** गायब है, लेकिन यह मुझे लगता है कि यह जवाब नहीं है। आप जो चाहते हैं उसे समझ नहीं सकते हैं और मुझे लगता है कि यही कारण है कि इस सवाल पर कोई प्रतिक्रिया नहीं है। ¿कौन सा लिंक, कौन सा शीर्षक, होवर व्यवहार का प्रबंधन करता है, आदि? –

+0

बस कुछ एसएस जोड़ा, मुझे उम्मीद है कि मदद करता है। – Seed

उत्तर

5

:

यह वही है मैं अब तक है। तो, मैं भी कोर की जांच नहीं करेंगे और गंदे समाधान के लिए सीधे जाओ:

add_action('admin_head-edit.php', 'so_13418722_move_quick_edit_links'); 

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

    if(current_user_can('delete_plugins')) 
    { 
     ?> 
     <script type="text/javascript"> 
     function so_13418722_doMove() 
     { 
      jQuery('td.post-title.page-title.column-title div.row-actions').each(function() { 
       var $list = jQuery(this); 
       var $firstChecked = $list.parent().parent().find('td.author.column-author'); 

       if (!$firstChecked.html()) 
        return; 

       $list.appendTo($firstChecked); 
      }); 
     } 
     jQuery(document).ready(function ($){ 
      so_13418722_doMove(); 
     }); 
     </script> 
     <?php 
    } 
} 

परिणाम:
move quick-edit

नोट्स:

  • अपने को समायोजित post_type: 'post' != $current_screen->post_type
  • समायोजित अपने कॉलम कक्षाएं: find('td.author.column-author')

बग और समाधान:
आपको लगता है कि ध्यान दें देंगे, अद्यतन करने के बाद, जल्दी संपादन मेनू अपनी मूल स्थिति में वापस चला जाता है। निम्नलिखित AJAX अवरोध इसके साथ सौदा करता है। अधिक जानकारी के लिए इस WordPress Developers answer का संदर्भ लें।

add_action('wp_ajax_inline-save', 'so_13418722_ajax_inline_save' , 0); 

/** 
Copy of the function wp_ajax_inline_save() 
http://core.trac.wordpress.org/browser/tags/3.4.2/wp-admin/includes/ajax-actions.php#L1315 

Only Modification marked at the end of the function with INTERCEPT 
*/ 
function so_13418722_ajax_inline_save() 
{ 
    global $wp_list_table; 

    check_ajax_referer('inlineeditnonce', '_inline_edit'); 

    if (! isset($_POST['post_ID']) || ! ($post_ID = (int) $_POST['post_ID'])) 
     wp_die(); 

    if ('page' == $_POST['post_type']) { 
     if (! current_user_can('edit_page', $post_ID)) 
      wp_die(__('You are not allowed to edit this page.')); 
    } else { 
     if (! current_user_can('edit_post', $post_ID)) 
      wp_die(__('You are not allowed to edit this post.')); 
    } 

    set_current_screen($_POST['screen']); 

    if ($last = wp_check_post_lock($post_ID)) { 
     $last_user = get_userdata($last); 
     $last_user_name = $last_user ? $last_user->display_name : __('Someone'); 
     printf($_POST['post_type'] == 'page' ? __('Saving is disabled: %s is currently editing this page.') : __('Saving is disabled: %s is currently editing this post.'), esc_html($last_user_name)); 
     wp_die(); 
    } 

    $data = &$_POST; 

    $post = get_post($post_ID, ARRAY_A); 
    $post = add_magic_quotes($post); //since it is from db 

    $data['content'] = $post['post_content']; 
    $data['excerpt'] = $post['post_excerpt']; 

    // rename 
    $data['user_ID'] = $GLOBALS['user_ID']; 

    if (isset($data['post_parent'])) 
     $data['parent_id'] = $data['post_parent']; 

    // status 
    if (isset($data['keep_private']) && 'private' == $data['keep_private']) 
     $data['post_status'] = 'private'; 
    else 
     $data['post_status'] = $data['_status']; 

    if (empty($data['comment_status'])) 
     $data['comment_status'] = 'closed'; 
    if (empty($data['ping_status'])) 
     $data['ping_status'] = 'closed'; 

    // update the post 
    edit_post(); 

    $wp_list_table = _get_list_table('WP_Posts_List_Table'); 

    $mode = $_POST['post_view']; 
    $wp_list_table->display_rows(array(get_post($_POST['post_ID']))); 

    // INTERCEPT: Check if it is our post_type, if not, do nothing 
    if('post' == $_POST['post_type']) 
    { 
    ?> 
     <script type="text/javascript">so_13418722_doMove();</script> 
    <?php  
    } 
    // end INTERCEPT  

    wp_die(); 

} 
+0

वाह, यह सही था; लेकिन मेरे कुछ कस्टम पोस्ट प्रकारों पर, कोई खिताब नहीं है; इसलिए, यदि शीर्षक गुम है तो आगे बढ़ने के लिए कुछ भी नहीं है। लेकिन यह एक उपयोगी कोड परवाह किए बिना है। और आपकी मदद के लिए धन्यवाद! – Seed

+0

मुझे लगता है कि उन्होंने इसे 4.3 –

0

आप स्वीकार किए गए उत्तर के रूप में जेएस का उपयोग किए बिना प्रति क्रियाओं को स्थानांतरित नहीं कर सकते हैं। हालांकि, आप php और inbuilt वर्डप्रेस फ़ंक्शंस के साथ क्रिया पॉपअप के अपने संस्करण को आसानी से बना सकते हैं। यह संस्करण तब भी काम करेगा जब उपयोगकर्ता ने जेएस बंद कर दिया हो।

आप यह मानकर अपने कस्टम कॉलम को भरने के लिए एक स्विच का उपयोग करें, कुछ को यह पसंद है, अगर अपने खुद के समारोह के लिए अनुकूल नहीं है:

switch ($column) { 
    case 'your_column_name': 
     echo "Your custom content here"; 
     my_custom_column_actions($post_id); 
     break; 
} 

तो एक अलग समारोह है कि कार्रवाई पॉपअप का पुनर्निर्माण करने की है।

function my_custom_column_actions($post_id) { 
     if($_GET['post_status']!='trash') : 
      $bare_url = "/wp-admin/post.php?post=$post_id&amp;action=trash"; 
      $nonce_url = wp_nonce_url($bare_url, 'trash-post_'.$post_id); 
      echo " <div class='row-actions'> 
         <span class='edit'> 
          <a href='/wp-admin/post.php?post=$post_id&amp;action=edit'>Edit</a> | 
         </span> 
         <span class='trash'> 
          <a href='$nonce_url' class='submitdelete'>Trash</a> 
         </span> 
         <span class='edit'> 
          <a href='".get_the_permalink($post_id)."'>View</a> | 
         </span> 
        </div>"; 
     else: 
      $bare_url = "/wp-admin/post.php?post=$post_id&amp;action=untrash"; 
      $nonce_url = wp_nonce_url($bare_url, 'untrash-post_'.$post_id); 
      $delete_url = "/wp-admin/post.php?post=$post_id&amp;action=delete"; 
      $nonce_delete_url = wp_nonce_url($delete_url, 'delete-post_'.$post_id); 
      echo " <div class='row-actions'> 
         <span class='untrash'> 
          <a href='$nonce_url' class='untrash'>Restore</a> | 
         </span> 
         <span class='delete'> 
          <a href='$nonce_delete_url' class='submitdelete'>Delete Permanently</a> 
         </span> 
        </div>"; 
     endif; 
    } 

सभी nonce_url रों के साथ व्यापार, trashing बहाल करने या हटाने के लिए महत्वपूर्ण है, ये क्रियाएं इसके बिना काम नहीं करेंगे।

यदि आप इसे एक कॉलम पर शामिल करना चाहते हैं जो सामान्य रूप से दिखाई देगा, उदा। लेखक या दिनांक प्रकाशित होने पर, आपको अपने कस्टम कॉलम घोषित करते समय मानक कॉलम शामिल करने की आवश्यकता नहीं होगी और इसके बजाय एक कस्टम कॉलम शामिल होगा जो समान डेटा प्राप्त करता है (साथ ही ऊपर दिए गए फ़ंक्शन पर कॉल)।

वही होता है यदि आप शीर्षक शामिल करना चाहते हैं लेकिन इसके अंतर्गत क्रियाएं नहीं दिखाई देती हैं - अन्यथा वे दो बार दिखाई देंगे। title कॉलम शामिल न करें और इसके बजाय अपना स्वयं का कस्टम कॉलम शामिल करें जो शीर्षक को पकड़ लेता है लेकिन नया फ़ंक्शन नहीं है।

आप फ़ंक्शन इकोज़ की सामग्री को संपादित करके भी अपने कार्यों को आसानी से जोड़ सकते हैं।

2

उपयोग कर रहा है

add_filter('list_table_primary_column', [ $this, 'list_table_primary_column' ], 10, 2); 

public function list_table_primary_column($default, $screen) { 
    if ('edit-yourpostype' === $screen) { 
     $default = 'yourcolumn'; 
    } 
    return $default; 
} 
+0

में अंतिम रूप से जोड़ा है यह 4.3.0+ के लिए सही उत्तर है – Acidon

1

मैं एक ही जरूरत थी WP 4.3.0 के बाद से ऐसा करने का सबसे अच्छा तरीका है।

Nicola's solution मेरे लिए काम किया गया, सिवाय इसके कि मुझे "अपरिभाषित चर" नोटिस/त्रुटि मिल रही थी। तब मुझे एहसास हुआ कि पैरामीटर "[$ यह ...]" भाग के बिना होना चाहिए।

मुझे लगता है कि दस्तावेज़ीकरण से एक कॉपी/पेस्ट था।

तो यह काम किया:

add_filter('list_table_primary_column', 'list_table_primary_column', 10, 2); 
function list_table_primary_column($default, $screen) { 
    if ('edit-your_post_type' === $screen) { 
     // Set default columns to Minutes Spent. 
     $default = 'your_column'; 
    } 
    return $default; 
} 

आप your_column क्या है पता नहीं है, बस उस स्तंभ के शीर्षक का निरीक्षण किया और आईडी मिलता है।

संबंधित मुद्दे