0

I have a shortcode [gf_popup pause="1000" location="bottom"] and the location attribute keeps coming back as Uncaught ReferenceError: bottom is not defined. Any thoughts on why? Here is the main part of the code:

function gfpu_shortcode($atts = [], $content = null, $tags = '')
{

    // normalize attribute keys, lowercase
$atts = array_change_key_case((array)$atts, CASE_LOWER);

// override default attributes with user attributes
$gfpu_atts = shortcode_atts([
                                 'pause'    => 5000,
                                 'location' => 'false',
                                 'popTrigger'   => 'false',
                             ], $atts, $tag);

    $timer = esc_html__($gfpu_atts['pause'], 'gf_popup');
    $location = esc_html__($gfpu_atts['location'], 'gf_popup');
    $popTrigger = esc_html__($gfpu_atts['popTrigger'], 'gf_popup'); 

}
add_shortcode('gf_popup', 'gfpu_shortcode');

Any thoughts?

  • Is your default 'false' actually being parsed as false? If that's the case and its registering the default as a boolean could be expecting a string but getting a boolean? Long shot, as I think variables hold both interchangeably. – Dan Sutherland Jun 23 '19 at 22:17
  • 2
    Uncaught ReferenceError is a JavaScript error. Is there any JavaScript associated with this shortcode? – Jacob Peattie Jun 24 '19 at 0:59
0

If you look at the defaults for location and popTrigger they have single quotes around them...

Assuming this is correct you need to add these around the new location value, so it does not think bottom is an (undefined) javascript variable, but rather a string value, via providing 'bottom'...

Or if you don't want to modify code to add the single quotes, you could also just do: [gf_popup pause="1000" location="'bottom'"] to pass the single quotes in via the shortcode attribute.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.