Question

I've been stumped on this for a while and cannot for the life of me figure out why my function isn't able to reference my global variable.

$query_obj = get_queried_object();

if ( is_a($query_obj, 'WP_Term') ) {
    $my_base_url = get_term_link($query_obj);
} elseif ( is_a($query_obj, 'WP_Post') ) {
    $my_base_url = get_permalink();
} else {
    $my_base_url = null;
}

function getDropdown($args, $items, $all=false) {
    global $my_base_url;

    if (isset($_GET[$args])) {
         $check = $_GET[$args];
    } else {
        $check = null;
    }
    $output = '<ul class="dropdown ' . $args . '">';
    if ($all == true) {
        $output .= '<li class="' . ($check == null ? 'active' : null) . '"><a href="' . remove_query_arg( $args, add_query_arg( null, null ) ) . '">All</a></li>';
    }
    foreach ($items as $key => $value) {
        $output .= '<li' . ($check == $value ? ' class="active"' : null) .'><a href="' . esc_url( add_query_arg( $args, $value ) ) . '">' . $key . '</a></li>';
    }
    $output .= '</ul>';
    return $output . '<p>' . $my_base_url . '</p>';
}

The return at the bottom just has a paragraph tacked out to return the variable but it shows up blank. The only way I've been able to use the base URL was by using it as a function argument and passing it that way. What am I missing?

No correct solution

OTHER TIPS

I try to use this code and for the if statments I had to put a global $query_obj before the code, I do not know if is the case.

global $query_obj;
if ( is_a($query_obj, 'WP_Term') ) {
    $my_base_url = get_term_link($query_obj);
} elseif ( is_a($query_obj, 'WP_Post') ) {
    $my_base_url = get_permalink();
} else {
    $my_base_url = null;
}

this seems to be working properly this way. In my wordpress only returns null. but the global variable $my_base_url is working fine when whe call $global $query_obj before the if's statments.

global $query_obj;
if ( is_a($query_obj, 'WP_Term') ) {
    $my_base_url = get_term_link($query_obj);
} elseif ( is_a($query_obj, 'WP_Post') ) {
    $my_base_url = get_permalink();
} else {
    $my_base_url = 'its null';
}
function ti(){
  global $my_base_url;
  echo '<pre>';
  print_r($my_base_url);
  echo '</pre>';
}
ti();

Now to test the function I will need the $args , $items variables at least..

If you have the wp_debug set to true in wp_config.php this error should appear

define( 'WP_DEBUG', true );
Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top