Compare commits

...

8 commits
0.2.6 ... main

Author SHA1 Message Date
Andy Fragen
3e2c694ca8 add test for install to theme 2023-05-30 14:45:15 -07:00
Andy Fragen
63fbe9fd01 oops, remove test code 2023-05-30 13:35:45 -07:00
Andy Fragen
2e47f5fec3 load JS where it exists
stop messing with tests for URL and transients
2023-05-30 13:29:06 -07:00
Andy Fragen
a195d3badb save int to transient, check for object
object is stale cache
2023-04-05 13:00:28 -07:00
Andy Fragen
606c0d5222 cast to int 2023-04-04 18:03:20 -07:00
Andy Fragen
5a3dd3198c parse response and save 2023-03-30 14:37:09 -07:00
Andy Fragen
2c421b09e8 use JSON as safe data storage
Bypass unserialize from get_transient wanting to load class of stored object
2023-03-30 13:06:00 -07:00
Andy Fragen
8b690bc045 update to not conflict with users of PaND 2023-01-02 11:27:07 -08:00
3 changed files with 16 additions and 13 deletions

View file

@ -1,7 +1,7 @@
{
"name": "afragen/wp-dismiss-notice",
"description": "Library for time dismissible WordPress admin notices.",
"version": "0.2.6",
"version": "0.3.7",
"type": "library",
"license": "MIT",
"authors": [

View file

@ -23,7 +23,7 @@
option_name = attr_value.join('-');

data = {
'action': 'dismiss_admin_notice',
'action': 'wp_dismiss_notice',
'option_name': option_name,
'dismissible_length': dismissible_length,
'nonce': window.wp_dismiss_notice.nonce

View file

@ -16,7 +16,7 @@ class WP_Dismiss_Notice {
*/
public static function init() {
add_action( 'admin_enqueue_scripts', [ __CLASS__, 'load_script' ] );
add_action( 'wp_ajax_dismiss_admin_notice', [ __CLASS__, 'dismiss_admin_notice' ] );
add_action( 'wp_ajax_wp_dismiss_notice', [ __CLASS__, 'dismiss_admin_notice' ] );
}

/**
@ -28,6 +28,9 @@ class WP_Dismiss_Notice {
return;
}

$js_url = plugins_url( 'js/dismiss-notice.js', __FILE__, 'wp-dismiss-notice' );
$version = json_decode( file_get_contents( __DIR__ . '/composer.json' ) )->version;

/**
* Filter composer.json vendor directory.
* Some people don't use the standard vendor directory.
@ -36,23 +39,23 @@ class WP_Dismiss_Notice {
*/
$vendor_dir = apply_filters( 'dismiss_notice_vendor_dir', '/vendor' );
$composer_js_path = untrailingslashit( $vendor_dir ) . '/afragen/wp-dismiss-notice/js/dismiss-notice.js';
$plugin_js_url = plugins_url( 'js/dismiss-notice.js', __FILE__, 'wp-dismiss-notice' );

// Test to get correct URL for JS.
$response = get_transient( 'wp-dismiss-notice_jsurl' );
if ( ! $response ) {
$response = wp_remote_head( $plugin_js_url );
set_transient( 'wp-dismiss-notice_jsurl', $response, WEEK_IN_SECONDS );
$theme_js_url = get_theme_file_uri( $composer_js_path );
$theme_js_file = parse_url( $theme_js_url, PHP_URL_PATH );

if ( file_exists( ABSPATH . $theme_js_file ) ) {
$js_url = $theme_js_url;
}

if ( '/vendor' !== $vendor_dir ) {
$js_url = home_url( $composer_js_path );
}
$js_url = ( 200 === wp_remote_retrieve_response_code( $response ) ) || is_wp_error( $response )
? $plugin_js_url
: get_stylesheet_directory_uri() . $composer_js_path;

wp_enqueue_script(
'dismissible-notices',
$js_url,
[ 'jquery', 'common' ],
false,
$version,
true
);