实际上,您的问题在这里是离题的,因为它是特定于javascripts的,而不是特定于WordPress的。但我正在回答这个问题,并让它更以WordPress为中心,以便其他人也能得到帮助。
以下函数将使a排队custom.js
主题文件夹中的文件/js
仅管理面板的子文件夹(将其放入functions.php
主题):
function my_admin_scripts() {
wp_enqueue_script( \'custom-js\', get_template_directory_uri() .\'/js/custom.js\', array(\'jquery\'), \'\', true );
}
add_action( \'admin_enqueue_scripts\', \'my_admin_scripts\' );
现在在
custom.js
文件写下以下代码:
jQuery(document).ready(function($) {
var field_one = $(\'#field_one\');
var field_two = $(\'#field_two\');
//hiding the field first
field_one.hide();
field_two.hide();
//on value change
$(\'[name="ecpt_gender"]\').on(\'change\', function(){
//we\'re checking what the value we\'ve got
if( $(this).val() === \'Female\' ) {
field_one.show(); //you can use slideDown() instead of show() for some animation
field_two.show();
} else {
field_one.hide();
field_two.hide();
}
});
});
如果只想将脚本加载到特定页面,请使用
$current_screen
函数内部全局:
function my_admin_scripts() {
global $current_screen;
//var_dump( $current_screen ); //check what you\'ve got using this variable
if( \'post.php\' === $current_screen || \'post-new.php\' === $current_screen )
wp_enqueue_script( \'custom-js\', get_template_directory_uri() .\'/js/custom.js\', array(\'jquery\'), \'\', true );
}
add_action( \'admin_enqueue_scripts\', \'my_admin_scripts\' );
始终要注意基于JS的显示/隐藏字段,因为它们在插入数据时很好,但在更新/编辑数据时可能不起作用。因此,应采取以下预防措施:
在metabox字段中使用get_post_meta()
并相应显示字段:
$ecpt_gender_db_val = get_post_meta( $post_id, \'field_name\', true ); //fetching single value
if( $ecpt_gender_db_val && $ecpt_gender_db_val === \'Female\' ) {
//show the fields associated with \'Female\' value
}
但在我看来,如果只针对新的帖子页面,那么更安全的做法是让JS更具体:
var field_one = $(\'body.post-new-php #field_one\');
这样做将使项目选择只针对添加新页面,而不适用于编辑页面。我正在使用动态
<body>
类以指定页面特定项的目标。