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?

2
  • 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. Jun 23, 2019 at 22:17
  • 2
    Uncaught ReferenceError is a JavaScript error. Is there any JavaScript associated with this shortcode? Jun 24, 2019 at 0:59

1 Answer 1

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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