WordPress函数:wp_enqueue_code_editor 引入代码编辑器需要的js和css

江河/ 02月01日/ WordPress/ 浏览 1387

函数原型:


wp_enqueue_code_editor( array $args ): array|false


引入代码编辑器需要的js和css


参数说明:

$args 中包含


type 要编辑的文件的MIME类型


file 要编辑的文件名。扩展用于探查类型。可以作为$type param的替代方案提供


theme WP_Theme 在主题文件编辑器上时正在编辑的主题


plugin 在插件文件编辑器上编辑的插件


codemirror 其他CodeMirror设置替代


csslint CSSLint规则重写


jshint JSHint规则重写


htmlhint HTMLHint规则重写


函数源码:


function wp_enqueue_code_editor( $args ) {
	if ( is_user_logged_in() && 'false' === wp_get_current_user()->syntax_highlighting ) {
		return false;
	}

	$settings = wp_get_code_editor_settings( $args );

	if ( empty( $settings ) || empty( $settings['codemirror'] ) ) {
		return false;
	}

	wp_enqueue_script( 'code-editor' );
	wp_enqueue_style( 'code-editor' );

	if ( isset( $settings['codemirror']['mode'] ) ) {
		$mode = $settings['codemirror']['mode'];
		if ( is_string( $mode ) ) {
			$mode = array(
				'name' => $mode,
			);
		}

		if ( ! empty( $settings['codemirror']['lint'] ) ) {
			switch ( $mode['name'] ) {
				case 'css':
				case 'text/css':
				case 'text/x-scss':
				case 'text/x-less':
					wp_enqueue_script( 'csslint' );
					break;
				case 'htmlmixed':
				case 'text/html':
				case 'php':
				case 'application/x-httpd-php':
				case 'text/x-php':
					wp_enqueue_script( 'htmlhint' );
					wp_enqueue_script( 'csslint' );
					wp_enqueue_script( 'jshint' );
					if ( ! current_user_can( 'unfiltered_html' ) ) {
						wp_enqueue_script( 'htmlhint-kses' );
					}
					break;
				case 'javascript':
				case 'application/ecmascript':
				case 'application/json':
				case 'application/javascript':
				case 'application/ld+json':
				case 'text/typescript':
				case 'application/typescript':
					wp_enqueue_script( 'jshint' );
					wp_enqueue_script( 'jsonlint' );
					break;
			}
		}
	}

	wp_add_inline_script( 'code-editor', sprintf( 'jQuery.extend( wp.codeEditor.defaultSettings, %s );', wp_json_encode( $settings ) ) );

	do_action( 'wp_enqueue_code_editor', $settings );

	return $settings;
}


包含钩子:


do_action( ‘wp_enqueue_code_editor’, array $settings )


使用举例:


function code_editor_enqueue_scripts() {
	if ( 'my_settings_page' !== get_current_screen()->id ) {
		return;
	}

	// Enqueue code editor and settings for manipulating HTML.
	$settings = wp_enqueue_code_editor( array( 'type' => 'text/html' ) );

	// Return if the editor was not enqueued.
	if ( false === $settings ) {
		return;
	}

	wp_add_inline_script(
		'code-editor',
		sprintf(
			'jQuery( function() { wp.codeEditor.initialize( "my_textarea_id", %s ); } );',
			wp_json_encode( $settings )
		)
	);
}
add_action( 'admin_enqueue_scripts', 'code_editor_enqueue_scripts' );


发表评论

暂无评论,抢个沙发...

客服 工单