wp_ajax_wp_link_ajax()
云策文档标注
概述
wp_ajax_wp_link_ajax() 是一个 WordPress AJAX 处理函数,用于通过 AJAX 处理内部链接查询请求。它验证请求、处理搜索参数,并调用 _WP_Editors::wp_link_query() 来获取结果,最后以 JSON 格式返回。
关键要点
- 函数用于处理内部链接的 AJAX 请求,确保安全性和数据完整性。
- 使用 check_ajax_referer() 验证 AJAX 请求,防止外部攻击。
- 处理 $_POST 参数如 'search' 或 'term' 作为搜索关键词,并支持分页参数 'page'。
- 调用 _WP_Editors::wp_link_query() 执行实际的帖子查询,返回内部链接结果。
- 结果以 JSON 格式输出,使用 wp_json_encode() 编码,并在完成后调用 wp_die() 终止执行。
代码示例
function wp_ajax_wp_link_ajax() {
check_ajax_referer( 'internal-linking', '_ajax_linking_nonce' );
$args = array();
if ( isset( $_POST['search'] ) ) {
$args['s'] = wp_unslash( $_POST['search'] );
}
if ( isset( $_POST['term'] ) ) {
$args['s'] = wp_unslash( $_POST['term'] );
}
$args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1;
if ( ! class_exists( '_WP_Editors', false ) ) {
require ABSPATH . WPINC . '/class-wp-editor.php';
}
$results = _WP_Editors::wp_link_query( $args );
if ( ! isset( $results ) ) {
wp_die( 0 );
}
echo wp_json_encode( $results );
echo "n";
wp_die();
}注意事项
- 函数依赖于 _WP_Editors 类,如果未加载,会自动包含 class-wp-editor.php 文件。
- 使用 wp_unslash() 处理输入参数,确保数据安全,避免转义问题。
- 如果查询结果为空或未设置,会调用 wp_die(0) 终止执行,返回空响应。
- 此函数自 WordPress 3.1.0 版本引入,是内部链接功能的核心部分。
原文内容
Handles internal linking via AJAX.
Source
function wp_ajax_wp_link_ajax() {
check_ajax_referer( 'internal-linking', '_ajax_linking_nonce' );
$args = array();
if ( isset( $_POST['search'] ) ) {
$args['s'] = wp_unslash( $_POST['search'] );
}
if ( isset( $_POST['term'] ) ) {
$args['s'] = wp_unslash( $_POST['term'] );
}
$args['pagenum'] = ! empty( $_POST['page'] ) ? absint( $_POST['page'] ) : 1;
if ( ! class_exists( '_WP_Editors', false ) ) {
require ABSPATH . WPINC . '/class-wp-editor.php';
}
$results = _WP_Editors::wp_link_query( $args );
if ( ! isset( $results ) ) {
wp_die( 0 );
}
echo wp_json_encode( $results );
echo "n";
wp_die();
}
Changelog
| Version | Description |
|---|---|
| 3.1.0 | Introduced. |