wp_xmlrpc_server::_toggle_sticky()privateWP 4.3.0

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

Метод класса: wp_xmlrpc_server{}

Хуков нет.

Возвращает

null|IXR_Error.

Использование

// private - только в коде основоного (родительского) класса
$result = $this->_toggle_sticky( $post_data, $update );
$post_data(массив) (обязательный)
-
$update(true|false)
-
По умолчанию: false

Список изменений

С версии 4.3.0 Введена.

Код wp_xmlrpc_server::_toggle_sticky() WP 6.5.2

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'] );
		}
	}
}