Easy Updates Manager 9.0.0 and 9.0.1 released

We are pleased to announce an updated version of Easy Updates Manager with the releases of 9.0.0 and 9.0.1. The new updates includes a range of new features, tweaks and fixes.

As part of the update you will see that we have developed the main admin user interface. This gives the user a much more clear and easier way to use and make the most of all the features of Easy Updates Manager. The update also lets Premium users check for unmaintained plugins, so there will be no nasty surprises when a plugin that you rely on stops updating and potentially becomes unsecured.

We recommend the update for all Easy Updates Manager users.

9.0.1

  • FIX: (Premium feature) UpdraftPlus will only take one backup during the auto-update process.
  • FIX: Update translations after an auto-update has completed.

9.0.0

  • FEATURE: Admin user interface has been cleaned up, providing more straightforward options.
  • FEATURE: (Premium) Check for unmaintained plugins.
  • TWEAK: Constants can now be used to disable the outdated browser warning (EUM_ENABLE_BROWSER_NAG), the WordPress version in the footer (EUM_ENABLE_WORDPRESS_FOOTER_VERSION), and the ratings prompt on the General screen (EUM_ENABLE_RATINGS_NAG).
  • FIX: Prevent Force Updates from deactivating plugins.
  • FIX: (Premium feature) UpdraftPlus will now take a backup during an auto-update
  • FIX: (Premium feature) Fix cron schedules so they are run at the correct time.

Easy Updates Manager 9.0.0 and 9.0.1 released

We are pleased to announce an updated version of Easy Updates Manager with the releases of 9.0.0 and 9.0.1. The new updates includes a range of new features, tweaks and fixes.

As part of the update you will see that we have developed the main admin user interface. This gives the user a much more clear and easier way to use and make the most of all the features of Easy Updates Manager. The update also lets Premium users check for unmaintained plugins, so there will be no nasty surprises when a plugin that you rely on stops updating and potentially becomes unsecured.

We recommend the update for all Easy Updates Manager users.

9.0.1

  • FIX: (Premium feature) UpdraftPlus will only take one backup during the auto-update process.
  • FIX: Update translations after an auto-update has completed.

9.0.0

  • FEATURE: Admin user interface has been cleaned up, providing more straightforward options.
  • FEATURE: (Premium) Check for unmaintained plugins.
  • TWEAK: Constants can now be used to disable the outdated browser warning (EUM_ENABLE_BROWSER_NAG), the WordPress version in the footer (EUM_ENABLE_WORDPRESS_FOOTER_VERSION), and the ratings prompt on the General screen (EUM_ENABLE_RATINGS_NAG).
  • FIX: Prevent Force Updates from deactivating plugins.
  • FIX: (Premium feature) UpdraftPlus will now take a backup during an auto-update
  • FIX: (Premium feature) Fix cron schedules so they are run at the correct time.

The post Easy Updates Manager 9.0.0 and 9.0.1 released appeared first on UpdraftPlus. UpdraftPlus – Backup, restore and migration plugin for WordPress.

Easy Updates Manager 9.0.0 an 9.0.1 released

We are pleased to announce an updated version of Easy Updates Manager with the releases of 9.0.0 and 9.0.1. The new updates includes a range of new features, tweaks and fixes.

As part of the update you will see that we have developed the main admin user interface. This gives the user a much more clear and easier way to use and make the most of all the features of Easy Updates Manager. The update also lets Premium users check for unmaintained plugins, so there will be no nasty surprises when a plugin that you rely on stops updating and potentially becomes unsecured.

We recommend the update for all Easy Updates Manager users.

9.0.1

  • FIX: (Premium feature) UpdraftPlus will only take one backup during the auto-update process.
  • FIX: Update translations after an auto-update has completed.

9.0.0

  • FEATURE: Admin user interface has been cleaned up, providing more straightforward options.
  • FEATURE: (Premium) Check for unmaintained plugins.
  • TWEAK: Constants can now be used to disable the outdated browser warning (EUM_ENABLE_BROWSER_NAG), the WordPress version in the footer (EUM_ENABLE_WORDPRESS_FOOTER_VERSION), and the ratings prompt on the General screen (EUM_ENABLE_RATINGS_NAG).
  • FIX: Prevent Force Updates from deactivating plugins.
  • FIX: (Premium feature) UpdraftPlus will now take a backup during an auto-update
  • FIX: (Premium feature) Fix cron schedules so they are run at the correct time.

The post Easy Updates Manager 9.0.0 an 9.0.1 released appeared first on UpdraftPlus. UpdraftPlus – Backup, restore and migration plugin for WordPress.

UpdraftPlus CCPA privacy notice

On January 1st 2020, the California Consumer Privacy Act (CCPA) introduced new data privacy rights for California residents – forcing companies that conduct business in the state of California to implement structural changes to their privacy programs. The new law is a response to the increasing role personal data plays in business practices and the personal privacy implications surrounding the collection, use, and protection of personal information.

Though UpdraftPlus may not necessarily meet the criteria necessary in order to comply with the CCPA law (1. Have $25 million or more in annual sales – 2. Buys, sells, or shares information on 50,000 or more individuals, households, or devices – 3. Derives more than half of our annual revenue from selling personal information), we have made every effort to meet and achieve CCPA compliance for the privacy rights of our California based customers. As such, we are providing this CCPA-specific privacy notice to supplement the information and disclosures already contained in our Data Protection and Privacy Centre. This notice applies only to individuals residing in California with an UpdraftPlus account from whom we collect personal information.

What is the CCPA?

The CCPA allows any California consumer to demand to see all the information a company has saved on them, as well as a full list of all the third parties that data is shared with. In addition, the California law allows consumers to sue companies if the privacy guidelines are violated, even if there is no breach.

Much like the GDPR law that was enacted in May 2018, many of the same rules on the use of customer data are represented in the CCPA. However the CCPA does takes a broader view than the GDPR of what constitutes private data.

How does CCPA differ from GDPR?

GDPR applies to the processing of all personal data, regardless of what that data is intended for or how it will be processed.

The CCPA is more specific regarding what kinds of data are protected and under what circumstances. While GDPR has strict user “opt-in” consent options before companies can access any of your data, CCPA only requires companies to supply the option to “opt-out” when user information is going to be actively sold or shared.

The CCPA does not provide the same protection to a wider range of user data types that the GDPR does. These include:

  • Data that is already legally available to the public
  • Medical information that’s protected under California’s Confidentiality of Medical Information Act (CMIA) or the federal Health Insurance Portability and Accountability Act (HIPPA)
  • Personal information covered by California’s Driver’s Privacy Protection Act

And other similar data sets.

UpdraftPlus does not sell personal information

The following categories of personal information have been defined by the CCPA. This information may have been collected and/or disclosed for a business purpose by ourselves in the last twelve months. The examples of the personal information provided in each category are taken from the CCPA and are included so you can better understand the specific information contained within a category. More information about the specific information UpdraftPlus gathers and how that information is used and processed can be found here.

 

CategoryWe CollectWe Sell
A. IdentifiersYes                               No                               
Examples: Name, alias, postal address, unique personal identifier, online identifier, internet protocol address, email address, account name, social security number, driver’s license number, passport number, or other similar identifiers.                                                            
B. Categories of personal information in Cal. Civ. Code 1798.80(e)Yes                               No                               
Examples: Name, signature, social security number, physical characteristics or description, address, telephone number, passport number, driver’s license or state identification card number, insurance policy number, education, employment, employment history, bank account number, credit card number, debit card number, or any other financial information, medical information, or health insurance information.                                                            
C. Characteristics of protected classifications under California or Federal lawNo                               N/A                               
Examples: Race or color, ancestry or national origin, religion or creed, age (over 40), mental or physical disability, sex (including gender and pregnancy, childbirth, breastfeeding or related medical conditions), sexual orientation, gender identity or expression, medical condition, genetic information, marital status, military and veteran status.                                                            
D. Commercial informationYes                               No                               
Examples: Records of personal property, products or services purchased, obtained, or considered, or other purchasing or consuming histories or tendencies.                                                            
E. Biometric informationNo                               N/A                               
Examples: Physiological, biological, or behavioral characteristics, including DNA, that can be used, singly or in combination with each other or with other identifying data, to establish individual identity, such as imagery of the iris, retina, fingerprint, face, hand, palm, vein patterns, and voice recordings, from which an identifier template, such as a faceprint, a minutiae template, or a voiceprint, can be extracted, and keystroke patterns or rhythms, gait patterns or rhythms, and sleep, health, or exercise data that contain identifying information.                                                            
F. Internet or other electronic network activity informationYes                               No                               
Examples: Browsing history, search history, and information regarding a consumer’s interaction with an internet website, application or advertisement.                                                            
G. Geolocation dataYes                               No
Example: Precise physical location.                                                            
H. Sensory informationNo                               N/A                               
Examples: Audio, electronic, visual, thermal, olfactory, or similar information.                                                            
I. Professional or employment-related informationNo                               N/A
Examples: Job application or resume information, past and current job history, and job performance information.                                                            
J. Non-Public education information (as defined in 20 U.S.C. 1232g; 34 C.F.R. Part 99)No                               N/A                               
Examples: Records that are directly related to a student maintained by an educational agency or institution or by a party acting for the agency or institution.                                                            
K. Inferences drawn from personal informationNo                               N/A
Examples: Consumer profiles reflecting a consumer’s preferences, characteristics, psychological trends, preferences, predispositions, behavior, attitudes, intelligence, abilities, and aptitudes.                                                            


Use of personal information

As the new CCPA has now come into force we wanted to clarify that UpdraftPlus meets the criteria necessary to be in accordance with the specific CCPA business and commercial purposes, as detailed below:

  1. Auditing related to a current interaction with you and concurrent transactions, including, but not limited to auditing compliance with this specification and other standards.
  2. Detecting security incidents, protecting against malicious, deceptive, fraudulent, or illegal activity, and prosecuting those responsible for that activity.
  3. Debugging to identify and repair errors that impair existing intended functionality.
  4. Short-term, transient use.
  5. Contracting with service providers to perform services on our behalf, including maintaining or servicing accounts, providing customer service, processing or fulfilling orders and transactions, verifying customer information, processing payments, providing advertising or marketing services, providing analytic services, or providing similar services on behalf of the business or service provider.
  6. Undertaking internal research for technological development and demonstration.
  7. Undertaking activities to verify or maintain the quality or safety of our services, and to improve, upgrade, or enhance our services.
  8. Otherwise enabling or effecting, directly or indirectly, a commercial transaction.
  9. For other purposes for which we provide specific notice at the time the information is collected.

UpdraftPlus’ collection and disclosure of personal information

In the last year UpdraftPlus have collected personal information from general sources including you, your use of our services, your devices, our affiliates, our vendors, and our service providers. More specific information about the personal information we collect is laid out in this in our GDPR and  Data Protection and Privacy Centre.

Your California privacy rights

If you are a California resident, the CCPA allows you to exercise the following rights. 

Right to know and access. You may submit a verifiable request for information regarding the: (1) categories of personal information collected or disclosed by us; (2) purposes for which categories of personal information are collected by us; (3) categories of sources from which we collect personal information; and (4) specific pieces of personal information we have collected about you during the past twelve months.

Right to Delete. Subject to certain exceptions, you have the option to delete personal information about you that we have collected from you.

Verification. Requests for access to or deletion of personal information are subject to our ability to reasonably verify your identity in light of the information requested and pursuant to relevant CCPA requirements, limitations, and regulations.

Right to Equal Service and Price. You have the right not to receive discriminatory treatment for the exercise of your CCPA privacy rights, subject to certain limitations.

Shine the Light. We do not rent, sell, or share your personal information with non affiliated companies for their direct marketing purposes, unless we have your permission.

Submit Requests. To exercise your rights under the CCPA, you can deactivate and purge your account (similar to the GDPR “right to erasure” – “right to be forgotten”) by sending us a customer support request under “This is a GDPR/CCPA-related query” in the “What kind of support request is this?” option. 

If you have any further questions or queries, please leave a comment below and we will get back to you as soon as possible.

The post UpdraftPlus CCPA privacy notice appeared first on UpdraftPlus. UpdraftPlus – Backup, restore and migration plugin for WordPress.

How to localize and translate a WordPress plugin – an in depth guide for plugin developers

When developing a plugin, it’s always good idea to make it translation ready as it could additionally reach audiences who do not use English as their first language. If you were wondering how important a translation option is, you can check the repository and see that every single popular plugin is available for language localization. You will find this option is available with UpdraftPlus, MetaSlider, WP-Optimize, Contact Form 7 and WooCommerce, as well as many more. These are some of the most popular plugins available and are coded in a way that allows anyone to translate them easily into their native language.

The purpose of this blog is to demonstrate to our readers how they can code a plugin so that it will be localized and translated into any supported WordPress language. For example, if we wanted to translate a plugin into French, the following steps will allow plugin translation and also make it ready for all supported WordPress languages.

Getting Started

When creating a plugin, we should make sure that we load the plugin text domain. WordPress provides this function:

load_plugin_textdomain()

This code will load the plugin’s translated strings. It may seem a little confusing, but keep reading and we’ll explain how it works shortly.

First, let’s take a look at how to add this function to our plugin code. In your plugin folder, create a directory called ‘languages’. Next, add the below code to your plugin main file.

* Load plugin textdomain.
*/
function plugin_load_textdomain() {
load_plugin_textdomain( 'udp', false, basename( dirname( __FILE__ ) ) . '/languages/' );
}
add_action( 'init', 'plugin_load_textdomain' );

In the above code, we keep the first parameter (domain) as ‘udp’. We should keep this domain name as per our name of the plugin. The second parameter defaults to false. The third parameter is the path of our ‘languages’ directory. This code keeps our translation files ready on the WordPress initialization.

Use of __() and _e() Methods

As we are aiming to make our plugin available in all languages, we should wrap all our plugin text inside either:

__() or _e() functions.

It is very easy to use these methods. Both methods work exactly the same but there is a rule for using both.

In our plugin code, we normally have two types of text. The first is wrapped in HTML directly and the second is displayed using PHP echo function. Below are examples of both types:

Type 1

<h2>My Plugin Title</h2>

Type 2

<?php echo 'My Plugin Settings'; ?>

The general rule is that if you are printing text using PHP echo then you should wrap text in the following code:

<code>__()</code>

If it is in HTML then use the code: <code>_e()</code>.

The above code should be written in the following way:

<h2><?php _e('My Plugin Title', 'udp'); ?></h2>

and

<?php echo __('My Plugin Settings', 'udp'); ?>

As can be seen in the above examples, the second parameter was written as ‘udp’, which is our plugin text domain. By using this domain, it will allow us to later translate our text into any language. This is how other plugins make their plugins translation ready.

If you wish, you can check our plugin:

UpdraftPlus

If you search for the text domain ‘updraftplus’, you will see how our plugin’s text is wrapped inside __() and _e() functions.

Create a Sample Plugin

The next stage is to create a sample plugin with the some text so we can test our translations. First, create an ‘udp’ folder in your plugin directory. Inside this folder create the file: udp.php and the folder languages. Next, add the below code to the plugin file.

udp.php

<?php
/*
Plugin Name: UDP
Description: This is a sample plugin to test for plugin text domain
Author: Editorial Staff
Version: 1.0
License: GPLv3 or later
Text Domain: udp
Domain Path: /languages
*/

if (!defined('ABSPATH')) die('No direct access allowed');/**
* Load plugin textdomain.
*/
function udp_load_textdomain() {
load_plugin_textdomain( 'udp', false, basename( dirname( __FILE__ ) ) . '/languages/' );
}
add_action( 'init', 'udp_load_textdomain' ); 

function udp_menu_page() {
add_menu_page(
__( 'UDP Setting Page', 'udp' ),
__( 'UDP Setting Page', 'udp' ),
'manage_options',
'udp_setting_page',
'udp_setting_page',
'',
6
);
}
add_action('admin_menu', 'udp_menu_page');

function udp_setting_page() {
?>
<h2><?php _e('My Plugin Title', 'udp'); ?></h2>
<?php
}

Create the Translation Files

To generate our translation files, we will use the following translation editor software:

POEDIT

Translation files (.po and .mo) contain the string to translate and the translated string. While creating the .po file we need to save it in ‘{domain}-language code’ format. In this example, the file will be udp-fr_FR.po.

Next, install the POEDIT software on your system. This software is available for all platforms and can be installed on Windows, Linux or Mac.

Once installed, open POEDIT and go to File->New, where we will enter our language code in the window prompt.

Click on the ‘Save’ icon, after which, the file explorer will open. Head over to the plugins languages directory and save it as the following: udp-fr_FR.po.

Now we are able to add the French translation for our plugin text. To do so, click on the ‘Extract from sources’ section.

This will open a catalog properties popup. We now need to configure the three following tabs: Translation Properties, Source Paths and Source Keywords. In the Translation Properties tab, add our domain ‘udp’ as the project name. Source Paths will be our plugin folder and we will add ‘__ and _e’ inside Source Keywords.

If you have multiple folders inside the plugin, then we will need to choose each directory individually.

After selecting the plugin folder you should see ‘.’ in the Paths section. Repeat the same process for other folders inside your plugin directory if necessary.

Under the Source Keywords, click on the + icon and add ‘__’ and ‘_e’ as a keyword and click the OK button.

In the next window, under Source text, you will have all strings available to translate from your plugin. Choose the string one by one and add your French translation to the string.

Once you add all translations, click on the Save icon. This will automatically save all your string translation in your udp-ft_FR.po file. Your .po file will now contain the following code:

#: udp.php:24 udp.php:25
msgid "UDP Setting Page"
msgstr "Page de configuration UDP"

#: udp.php:37
msgid "My Plugin Title"
msgstr "Titre de mon plugin"

Test Our Plugin Translation

We have now completed the task of creating .po and .mo files for our plugin. Now it’s time to test our plugin and check the French language translation.

First, download our language file from the following address:

WordPress Language repository.

For the French language, the path is as follows:

French WordPress Language repository.
fr_FR.mo and fr_FR.po

Download files from this link and store it in the wp-content/languages directory. Create the ‘languages’ folder, if it does not already exist.

Next, we need to change the default language of our WordPress installation. Open the wp-config.php file and add the language as follows:

define('WPLANG', 'fr_FR');

Now if you go to the dashboard, your plugin should be displaying in the French language.

In conclusion

Creating a localized translation for your WordPress plugin can seem a little daunting and complicated at first. However the potential benefits of offering large non English speaking countries like Brazil, France and Germany your plugin in their native language can help open your plugin up to a whole new, appreciate audience. While it may seem like a lot of work, the rewards could be considerable.

The post How to localize and translate a WordPress plugin – an in depth guide for plugin developers appeared first on UpdraftPlus. UpdraftPlus – Backup, restore and migration plugin for WordPress.