-
-
Save petertwise/eeb7dea2531ad204a346e42faba0179a to your computer and use it in GitHub Desktop.
#!/bin/bash | |
# Setup ACF Pro to use a license key in wp-config | |
# | |
# 1. Place your license key in a file called .acf-license-key somewhere your ssh user has access to it. | |
# Default is in your home directory: ~/.acf-license-key | |
# Change the setting below if you need to put it somewhere else | |
# 2. install this file in /usr/local/bin or someplace in your PATH | |
# 3. make sure you have WP CLI installed | |
# 4. run acf-install-license from the root of your wordpress install | |
# set the license key in wp-config | |
ACF_LICENSE_KEY=`cat ~/.acf-license-key` | |
wp config set ACF_PRO_LICENSE $ACF_LICENSE_KEY | |
# install the mu-plugin | |
mkdir -p wp-content/mu-plugins | |
cd wp-content/mu-plugins | |
wget -O acf_pro_license_constant.php https://gist.githubusercontent.com/petertwise/eeb7dea2531ad204a346e42faba0179a/raw/acf_pro_license_constant.php | |
cd ../.. | |
wait | |
echo "✅ License and Plugin Installed | |
" |
<?php | |
/* | |
Plugin Name: ACF Pro License Constant | |
Plugin URI: https://gist.github.com/petertwise/eeb7dea2531ad204a346e42faba0179a | |
Description: Enables entering ACF Pro plugin activation codes via wp-config.php | |
Version: 1.1.2 | |
Allows storing license key info for Advanced Custom Fields Pro in wp-config.php | |
Especially handy if you're constantly pulling database copies between production/staging/local | |
and invalidating the license in the process | |
Usage: Place this in wp-config.php | |
define('ACF_PRO_LICENSE', 'yourkeyhere' ); | |
*/ | |
/* | |
ACF Pro License Constant is free software: you can redistribute it and/or modify | |
it under the terms of the GNU General Public License as published by | |
the Free Software Foundation, either version 2 of the License, or | |
any later version. | |
ACF Pro License Constant is distributed in the hope that it will be useful, | |
but WITHOUT ANY WARRANTY; without even the implied warranty of | |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
GNU General Public License for more details. | |
You should have received a copy of the GNU General Public License | |
along with ACF Pro License Constant. If not, see https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html. | |
*/ | |
function squarecandy_acf_pro_license_autosave() { | |
/* | |
bail out if: | |
- setting in wp-config doesn't exist | |
- setting in wp-config is empty | |
- ACF Pro is not installed and activated | |
- the existing key matches the setting | |
*/ | |
if ( ! defined( 'ACF_PRO_LICENSE' ) || empty( ACF_PRO_LICENSE ) || ! function_exists( 'acf_pro_get_license_key' ) || acf_pro_get_license_key() === ACF_PRO_LICENSE ) { | |
return; | |
} | |
// everything below is modified from advanced-custom-fields-pro/pro/admin/admin-updates.php in the activate_pro_licence function | |
// Connect to API. | |
$post = array( | |
'acf_license' => ACF_PRO_LICENSE, | |
'acf_version' => acf_get_setting('version'), | |
'wp_name' => get_bloginfo('name'), | |
'wp_url' => home_url(), | |
'wp_version' => get_bloginfo('version'), | |
'wp_language' => get_bloginfo('language'), | |
'wp_timezone' => get_option('timezone_string'), | |
); | |
$response = acf_updates()->request('v2/plugins/activate?p=pro', $post); | |
// Check response is expected JSON array (not string). | |
if( is_string($response) ) { | |
$response = new WP_Error( 'server_error', esc_html($response) ); | |
} | |
// Display error. | |
if( is_wp_error($response) ) { | |
wp_die( $response->get_error_message() ); | |
} | |
// On success. | |
if( $response['status'] == 1 ) { | |
// Update license. | |
acf_pro_update_license( $response['license'] ); | |
// Refresh plugins transient to fetch new update data. | |
acf_updates()->refresh_plugins_transient(); | |
// Show notice. | |
acf_add_admin_notice( $response['message'], 'success' ); | |
// On failure. | |
} else { | |
// Show notice. | |
acf_add_admin_notice( $response['message'], 'warning' ); | |
} | |
} | |
add_filter( 'admin_init', 'squarecandy_acf_pro_license_autosave' ); |
Good catch @dotZak - copypasta from something class-based, I'm sure. See revision.
This is tremendous! Thank you so much for pursuing this problem. Finally I can use a ACF licence constant in my environments. Great job!
I have utilised your acf_pro_license_constant.php
plugin file by including it my mu-plugins folder.
And simply defining ACF_PRO_LICENSE
constant my wp-config.php
files and my local docker-compose.yml
file.
Hi there, thanks for the very useful plugin!
Unfortunately, after the last update, I get the following message as soon as I log in in the wp admin panel: cURL error 60: SSL certificate problem: certificate has expired
The certificate has been updated and I don't understand how to use the plugin in my local environment anymore!
Anyone experiencing the same issue?
here the Call Stack:
wp_die()
wp-content/mu-plugins/acf_pro_license_constant.php:68
squarecandy_acf_pro_license_autosave()
wp-includes/class-wp-hook.php:303
do_action('admin_init')
wp-admin/admin.php:175
I found this solution which fix the problem for me: https://wp-kama.com/note/error-making-request-wordpress
Hi there, thanks for the very useful plugin!
Unfortunately, after the last update, I get the following message as soon as I log in in the wp admin panel: cURL error 60: SSL certificate problem: certificate has expired
The certificate has been updated and I don't understand how to use the plugin in my local environment anymore!
Anyone experiencing the same issue?
here the Call Stack:
wp_die() wp-content/mu-plugins/acf_pro_license_constant.php:68 squarecandy_acf_pro_license_autosave() wp-includes/class-wp-hook.php:303 do_action('admin_init') wp-admin/admin.php:175
Very pleased that this will now be part of ACF PRO as of 5.11:
https://support.advancedcustomfields.com/forums/topic/pro-license-key-in-config/#post-150028
Because they have chosen the exact same constant, you can just remove this drop in plugin and everything should continue to work.
@petertwise this is great news, thanks for the head up 👍🏻
What is
$this
on line 52?