Wordpress PHP issue in functions.php regarding if

2019-09-06 11:23发布

问题:

My Home page is a static custom Login Page for a network multisite with the Theme-my-login plugin running om a Divi child theme. On the login page there is the login itself which works fine, and below that two "action links" for "Register" and "Lost Password". I have two custom pages to link to for both links.

So I edit the child theme's functions.php file. Let’s say you wanted to change the default Register action link to a different URL:

function tml_action_url( $url, $action, $instance ) {
    if ( 'register' == $action )
        $url = 'YOUR REGISTRATION URL HERE';
    return $url;
}
add_filter( 'tml_action_url', 'tml_action_url', 10, 3 );

That works perfectly. If I want to include the lost password link too however:

function tml_action_url( $url, $action, $instance ) {
    if ( 'register' == $action )
        $url = 'YOUR REGISTRATION URL HERE';
    else if ( 'lost password' == $action )
        $url = 'YOUR LOST PASSWORD URL HERE';
    return $url;
}
add_filter( 'tml_action_url', 'tml_action_url', 10, 3 );

it breaks for some reason. Any help much appreciated. I have a feeling I'm not using the correct syntax or something. TIA. Jim

回答1:

From documentation

Note that elseif and else if will only be considered exactly the same when using curly brackets. When using a colon to define your if/elseif conditions, you must not separate else if into two words, or PHP will fail with a parse error.

Either use elseif instead of else if or use curly brackets like so:

function tml_action_url( $url, $action, $instance ) 
{
    if ( 'register' == $action )
    {
        $url = 'YOUR REGISTRATION URL HERE';
    }
    else if ( 'lost password' == $action )
    {
        $url = 'YOUR LOST PASSWORD URL HERE';'
    }
    return $url;
}


标签: php wordpress