W3cubDocs

/WordPress

wp_xmlrpc_server::_toggle_sticky( array $post_data, bool $update = false ): void|IXR_Error

Encapsulates the logic for sticking a post and determining if the user has permission to do so.

Parameters

$post_dataarrayrequired
$updatebooloptional

Default:false

Return

void|IXR_Error

Source

private function _toggle_sticky( $post_data, $update = false ) {
	$post_type = get_post_type_object( $post_data['post_type'] );

	// Private and password-protected posts cannot be stickied.
	if ( 'private' === $post_data['post_status'] || ! empty( $post_data['post_password'] ) ) {
		// Error if the client tried to stick the post, otherwise, silently unstick.
		if ( ! empty( $post_data['sticky'] ) ) {
			return new IXR_Error( 401, __( 'Sorry, you cannot stick a private post.' ) );
		}

		if ( $update ) {
			unstick_post( $post_data['ID'] );
		}
	} elseif ( isset( $post_data['sticky'] ) ) {
		if ( ! current_user_can( $post_type->cap->edit_others_posts ) ) {
			return new IXR_Error( 401, __( 'Sorry, you are not allowed to make posts sticky.' ) );
		}

		$sticky = wp_validate_boolean( $post_data['sticky'] );
		if ( $sticky ) {
			stick_post( $post_data['ID'] );
		} else {
			unstick_post( $post_data['ID'] );
		}
	}
}

Changelog

Version Description
4.3.0 Introduced.

© 2003–2024 WordPress Foundation
Licensed under the GNU GPLv2+ License.
https://developer.wordpress.org/reference/classes/wp_xmlrpc_server/_toggle_sticky