Add a class with body_class to a specific url with parameter
-
17-04-2021 - |
Question
i try to add a class to the body for a specific page/url, which has a parameter at the end. the url looks like this: https://sample-site.com/user/37/?um_action=edit
with my code, the class is also added to the url without parameter. i know why this is happening, but i dont have any other idea to get this to work.
function leweb_add_body_class_um_edit_profile( $classes ) {
global $wp;
$current_url = home_url( add_query_arg( array(), $wp->request ) ) . '/?um_action=edit';
$profile_url = um_user_profile_url() . '?um_action=edit';
if ( $profile_url == $current_url ) {
$classes[] = 'leweb-um-profile-edit';
}
return $classes;
}
add_filter( 'body_class','leweb_add_body_class_um_edit_profile' );
Solution
You're overcomplicating it a bit. ?um_action=edit
is a query string, and its values are available in the $_GET
superglobal. To check if it exists, and has a specific value, you just need to do this:
function leweb_add_body_class_um_edit_profile( $classes ) {
if ( isset( $_GET['um_action'] ) && 'edit' === $_GET['um_action'] ) {
$classes[] = 'leweb-um-profile-edit';
}
return $classes;
}
add_filter( 'body_class','leweb_add_body_class_um_edit_profile' );
Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange