meta_name = $meta_name; } /** * Returns the user meta name storing the enabled/disabled statuses of the action per post type. * * @since 3.6 * * @return string The user meta name. */ public function get_meta_name(): string { return $this->meta_name; } /** * Tells whether the button is active or not. * * @since 2.1 * * @global $post * * @return bool */ public function is_active() { global $post; $user_meta = $this->get(); return ! empty( $user_meta[ $post->post_type ] ); } /** * Returns the user meta value. * * @since 3.6 * * @return bool[] */ public function get() { $user_meta = get_user_meta( (int) get_current_user_id(), $this->get_meta_name(), true ); return is_array( $user_meta ) ? $user_meta : array(); } /** * Updates the user meta. * * @since 3.6 * * @param bool[] $user_meta An array with post type as key and boolean as value. * @param WP_User|null $user An instance of `WP_User`. * @return bool */ public function update( $user_meta, $user = null ) { if ( ! $user instanceof WP_User ) { $user = wp_get_current_user(); } return (bool) update_user_meta( (int) $user->ID, $this->get_meta_name(), $user_meta ); } /** * Saves the button state. * * @since 2.1 * * @param string $post_type Current post type. * @param bool $active New requested button state. * @return bool Whether the new button state is accepted or not. */ public function toggle_option( $post_type, $active ) { $user_meta = $this->get(); $user_meta[ $post_type ] = (bool) $active; return $this->update( $user_meta ); } }