函数文档

wp_ajax_delete_tag()

💡 云策文档标注

概述

wp_ajax_delete_tag() 是一个 WordPress AJAX 处理函数,用于安全删除标签。它验证用户权限和请求,执行删除操作,并返回相应状态。

关键要点

  • 函数通过 AJAX 处理标签删除请求,确保异步操作的安全性。
  • 使用 check_ajax_referer() 验证请求来源,防止跨站请求伪造(CSRF)。
  • 检查当前用户是否具有 delete_term 权限,无权限时终止执行。
  • 通过 wp_delete_term() 删除标签,成功返回 1,失败返回 0。
  • 依赖 get_term() 获取标签数据,并使用 is_wp_error() 处理错误。

代码示例

function wp_ajax_delete_tag() {
    $tag_id = (int) $_POST['tag_ID'];
    check_ajax_referer( "delete-tag_$tag_id" );

    if ( ! current_user_can( 'delete_term', $tag_id ) ) {
        wp_die( -1 );
    }

    $taxonomy = ! empty( $_POST['taxonomy'] ) ? $_POST['taxonomy'] : 'post_tag';
    $tag      = get_term( $tag_id, $taxonomy );

    if ( ! $tag || is_wp_error( $tag ) ) {
        wp_die( 1 );
    }

    if ( wp_delete_term( $tag_id, $taxonomy ) ) {
        wp_die( 1 );
    } else {
        wp_die( 0 );
    }
}

注意事项

  • 确保前端 AJAX 请求正确传递 tag_ID 和 taxonomy 参数,并包含有效的 nonce。
  • 用户权限检查基于 delete_term 能力,需根据角色配置调整。
  • 函数返回状态码用于前端处理,-1 表示权限错误,1 表示成功或标签不存在,0 表示删除失败。

📄 原文内容

Handles deleting a tag via AJAX.

Source

function wp_ajax_delete_tag() {
	$tag_id = (int) $_POST['tag_ID'];
	check_ajax_referer( "delete-tag_$tag_id" );

	if ( ! current_user_can( 'delete_term', $tag_id ) ) {
		wp_die( -1 );
	}

	$taxonomy = ! empty( $_POST['taxonomy'] ) ? $_POST['taxonomy'] : 'post_tag';
	$tag      = get_term( $tag_id, $taxonomy );

	if ( ! $tag || is_wp_error( $tag ) ) {
		wp_die( 1 );
	}

	if ( wp_delete_term( $tag_id, $taxonomy ) ) {
		wp_die( 1 );
	} else {
		wp_die( 0 );
	}
}

Changelog

Version Description
3.1.0 Introduced.