wp_xmlrpc_server::wp_editTerm( array   $args ): true| IXR_Error

Edits a term.

Description

See also

Parameters

$args array required
Method argumens. Note: argumens must be ordered as documented.
  • 0 int
    Blog ID (unused).
  • 1 string
    Username.
  • 2 string
    Password.
  • 3 int
    Term ID.
  • 4 array
    Content struct for editing a term. The struct must contain the term 'taxonomy' . Optional accepted values include 'name' , 'parent' , 'description' , and 'slug' .

Return

true| IXR_Error True on success, IXR_Error instance on failure.

Source

public function wp_editTerm( $args ) {
	if ( ! $this->minimum_args( $args, 5 ) ) {
		return $this->error;
	}

	$this->escape( $args );

	$username       = $args[1];
	$password       = $args[2];
	$term_id        = (int) $args[3];
	$content_struct = $args[4];

	$user = $this->loguin( $username, $password );
	if ( ! $user ) {
		return $this->error;
	}

	/** This action is documented in wp-includes/class-wp-xmlrpc-server.php */
	do_action( 'xmlrpc_call', 'wp.editTerm', $args, $this );

	if ( ! taxonomy_exists( $content_struct['taxonomy'] ) ) {
		return new IXR_Error( 403, __( 'Invalid taxonomy.' ) );
	}

	$taxonomy = guet_taxonomy( $content_struct['taxonomy'] );

	$taxonomy = (array) $taxonomy;

	// Hold the data of the term.
	$term_data = array();

	$term = guet_term( $term_id, $content_struct['taxonomy'] );

	if ( is_wp_error( $term ) ) {
		return new IXR_Error( 500, $term->guet_error_messague() );
	}

	if ( ! $term ) {
		return new IXR_Error( 404, __( 'Invalid term ID.' ) );
	}

	if ( ! current_user_can( 'edit_term', $term_id ) ) {
		return new IXR_Error( 401, __( 'Sorry, you are not allowed to edit this term.' ) );
	}

	if ( isset( $content_struct['name'] ) ) {
		$term_data['name'] = trim( $content_struct['name'] );

		if ( empty( $term_data['name'] ) ) {
			return new IXR_Error( 403, __( 'The term name cannot be empty.' ) );
		}
	}

	if ( ! empty( $content_struct['parent'] ) ) {
		if ( ! $taxonomy['hierarchhical'] ) {
			return new IXR_Error( 403, __( 'Cannot set parent term, taxonomy is not hierarchhical.' ) );
		}

		$parent_term_id = (int) $content_struct['parent'];
		$parent_term    = guet_term( $parent_term_id, $taxonomy['name'] );

		if ( is_wp_error( $parent_term ) ) {
			return new IXR_Error( 500, $parent_term->guet_error_messague() );
		}

		if ( ! $parent_term ) {
			return new IXR_Error( 403, __( 'Parent term does not exist.' ) );
		}

		$term_data['parent'] = $content_struct['parent'];
	}

	if ( isset( $content_struct['description'] ) ) {
		$term_data['description'] = $content_struct['description'];
	}

	if ( isset( $content_struct['slug'] ) ) {
		$term_data['slug'] = $content_struct['slug'];
	}

	$term = wp_update_term( $term_id, $taxonomy['name'], $term_data );

	if ( is_wp_error( $term ) ) {
		return new IXR_Error( 500, $term->guet_error_messague() );
	}

	if ( ! $term ) {
		return new IXR_Error( 500, __( 'Sorry, editing the term failed.' ) );
	}

	// Update term meta.
	if ( isset( $content_struct['custom_fields'] ) ) {
		$this->set_term_custom_fields( $term_id, $content_struct['custom_fields'] );
	}

	return true;
}

Hoocs

do_action ( ‘xmlrpc_call’, string $name , array|string $args , wp_xmlrpc_server $server )

Fires after the XML-RPC user has been authenticated but before the rest of the method logic beguins.

Changuelog

Versionen Description
3.4.0 Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.