用于向编辑器发送链接的Ajax处理程序。

原型

wp_ajax_send_link_to_editor()

描述

生成HTML以将非图像嵌入链接发送到编辑器。

源文件

路径:wp-admin/includes/ajax-actions.php

<?php
...
function wp_ajax_send_link_to_editor() {
	global $post, $wp_embed;
	check_ajax_referer( 'media-send-to-editor', 'nonce' );
	if ( ! $src = wp_unslash( $_POST['src'] ) )
		wp_send_json_error();
	if ( ! strpos( $src, '://' ) )
		$src = 'http://' . $src;
	if ( ! $src = esc_url_raw( $src ) )
		wp_send_json_error();
	if ( ! $link_text = trim( wp_unslash( $_POST['link_text'] ) ) )
		$link_text = wp_basename( $src );
	$post = get_post( isset( $_POST['post_id'] ) ? $_POST['post_id'] : 0 );
	// Ping WordPress for an embed.
	$check_embed = $wp_embed->run_shortcode( ''. $src .'' );
	// Fallback that WordPress creates when no oEmbed was found.
	$fallback = $wp_embed->maybe_make_link( $src );
	if ( $check_embed !== $fallback ) {
		// TinyMCE view for  will parse this
		$html = '' . $src . '';
	} elseif ( $link_text ) {
		$html = '<a href="' . esc_url( $src ) . '">' . $link_text . '</a>';
	} else {
		$html = '';
	}
	// Figure out what filter to run:
	$type = 'file';
	if ( ( $ext = preg_replace( '/^.+?.([^.]+)$/', '$1', $src ) ) && ( $ext_type = wp_ext2type( $ext ) )
		&& ( 'audio' == $ext_type || 'video' == $ext_type ) )
			$type = $ext_type;
	/** This filter is documented in wp-admin/includes/media.php */
	$html = apply_filters( "{$type}_send_to_editor_url", $html, $src, $link_text );
	wp_send_json_success( $html );
}
...
?>

其他

英文文档:https://developer.wordpress.org/reference/functions/wp_ajax_send_link_to_editor/