How to pass conditional array to wp_localize_script
Question
I’m trying to generate a custom array
from a PHP function to pass on wp_localize_script
but I seem to not be able to set page conditionals.
I have the following function:
function mb_scripts_settings() {
// blanks
$mb_ajax_form_type = $mb_get_page_slug = $mb_redirect = $mb_redirect_time = $mb_form_disable = $mb_array = '';
// get the form type
$mb_ajax_form_type = ( is_front_page() ? 'change' : 'submit' );
// get the page
$mb_get_page_slug = get_page_link();
// generate the url for redirection
$mb_form_area = ( ( is_page('admin') && isset($_GET['mbtab']) ) ? $_GET['mbtab'] : null );
$mb_form_area_url = ( empty($mb_form_area) ? '/' : '/admin/?mbtab=' . $mb_form_area . '&mbform=1' );
// if the page is admin
if( is_page('admin') ) {
$mb_redirect = true;
$mb_redirect_time = 3000;
$mb_form_disable = true;
}
// if the page is password set
if( is_page('pw') ) {
$mb_redirect = true;
$mb_redirect_time = 3000;
$mb_form_disable = true;
}
// if the page is front
if( is_page('pw') ) {
$mb_redirect = false;
$mb_redirect_time = 0;
$mb_form_disable = false;
$mb_form_area = $mb_form_area_url = '';
}
// build the array
$mb_array = array( $mb_ajax_form_type, $mb_get_page_slug, $mb_redirect, $mb_redirect_time, $mb_form_disable );
return $mb_array;
}
However, I am getting an error saying I can’t call is_front_page
or is_page
outside of the loop. I have tried to do this by getting the page id and then the slug from that but it hasn’t returned any results – always blank in the mb_get_page_slug
function mb_scripts() {
wp_enqueue_script( 'mbtheme_js', mbWebOS_js . 'theme-scripts. '.js' );
wp_localize_script( 'mbtheme_js', 'mbtheme_js', mb_scripts_settings() );
}
add_action( 'wp_enqueue_scripts', 'mb_scripts' );
0
array, conditional-tags, wp-localize-script
3 years
2019-11-20T22:47:52-05:00
2019-11-20T22:47:52-05:00 0 Answers
69 views
0
Leave an answer