2013-06-21 54 views
0

大家好,我是WordPress的noob,請耐心等待。所以在template.php中我需要meta_form()函數的功能根據幾個條件進行更改。這裏是什麼樣子:在wp-admin/includes/template.php中定製meta_form()

原始代碼:

function meta_form() { 
     global $wpdb; 
     $limit = (int) apply_filters('postmeta_form_limit', 30); 
     $keys = $wpdb->get_col(" 
      SELECT meta_key 
      FROM $wpdb->postmeta 
      GROUP BY meta_key 
      HAVING meta_key NOT LIKE '\_%' 
      ORDER BY meta_key 
      LIMIT $limit"); 
     if ($keys) 
      natcasesort($keys); 
    ?> 

定製版:

function meta_form() { 
    global $wpdb; 

    if (isset($_GET['post'])) 
    $post_id = (int) $_GET['post']; 
    elseif (isset($_POST['post_ID'])) 
    $post_id = (int) $_POST['post_ID']; 
    else 
    $post_id = 0; 

    if ($post_id) { 
    $post_ = get_post($post_id); 

    } 

    if ($post_->post_type == 'video_photo'){ 
    $limit = (int) apply_filters('postmeta_form_limit', 30); 
    $keys = $wpdb->get_col(" 
     SELECT meta_key 
     FROM $wpdb->postmeta 
     where meta_key like 'tqmcf_%' 
     GROUP BY meta_key 
     HAVING meta_key NOT LIKE '\_%' 
     ORDER BY meta_key 
     LIMIT $limit"); 
    }else{ 
    $limit = (int) apply_filters('postmeta_form_limit', 30); 
    $keys = $wpdb->get_col(" 
     SELECT meta_key 
     FROM $wpdb->postmeta 
     GROUP BY meta_key 
     HAVING meta_key NOT LIKE '\_%' 
     ORDER BY meta_key 
     LIMIT $limit"); 
    } 

    if ($keys) 
     natcasesort($keys); 
?> 

什麼是覆蓋meta_form功能的最佳方式?我需要創建一個插件還是什麼?我似乎無法找到一個乾淨的答案。 (我沒有寫這個代碼,我只是修復它的人)。

回答

1

meta_form函數是不可插入的,並且沒有可用的鉤子,所以,因爲黑客入侵併不是真的推薦,所以您需要另一種方法。以下是一個jQuery解決方案。將代碼放在主題的functions.php文件中,或者插入到插件中:

add_action('admin_footer', 'so17239871_mod_metakeyselect'); 
function so17239871_mod_metakeyselect() 
{ 
    global $pagenow, $post_type; 

    if(! ('post.php' == $pagenow && 'video_photo' == $post_type)) 
     return; 
?> 
<script type="text/javascript"> 
jQuery(document).ready(function(){ 
    jQuery("#metakeyselect > option").hide(); 
    jQuery("#metakeyselect > option[value^='tqmcf_']").show(); 
}); 
</script> 
<?php 
} 
+0

非常感謝!這段代碼究竟做了什麼?我不太確定'meta_form'的作用。那麼'value^='tqmcf _']'中的'^'是什麼? – Edmund

+0

它會隱藏選擇下拉菜單中的每個按鍵,而不是以'tqmcf_'開始,'video_photo'發帖類型爲 – diggy

+0

不錯。我如何真正測試這段代碼?我在哪裏可以找到使用原始源代碼加載表單的表單?在管理部分? – Edmund