所以在模板中。php原始函数如下所示:
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);
我一直在做研究,看来对核心的任何更改都应该在我的主题功能中完成。php文件使用add\\u filter或add\\u action。走这条路对吗?我该怎么做?我仍然不太了解它们是如何工作的。
提前感谢您的帮助。
最合适的回答,由SO网友:diggy 整理而成
好像你问过这个问题on SO 此外,我在那里发布了以下答案:
这个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
}