使用 if/else 语句和 str_replace 通过简码添加变量

using if/else statement with str_replace to add variables via shortcode

我正在使用生成自定义贝宝按钮并将特定参数传递给贝宝结帐表单的自定义简码。

我正在使用 str_replace 函数将短代码中定义的属性传递给 html 表单。

如果未在短代码中定义为属性,我想设置默认样式 class 和默认标题。

我的php:

function paypal_button_func($attrs){


$class=$attrs['class']; //Added button style class variable 
$title=$attrs['title']; //Added button title variable 



if( isset( $atts['title'])) //add button title to the form html
{
return $html=str_replace('[title]',$title,$html); 
} 

//This sets the default title if not defined
else {
    return $html=str_replace ('[title]','SIGN UP NOW',$html); 
}

这是我的 html

<input type="submit" class="[class]" value="[title]" /> <!-- updated class and value for addtl shortcode parameters -->

我成功地使用以下代码将短代码属性传递给 html,但问题是如果属性未在短代码中定义,它会输出 [class ] 和 [title] 作为值,这不是我想要发生的。

$html=str_replace('[title]',$title,$html); //add button title assigned to the form    
$html=str_replace('[class]',$class,$html); //replaces class assigned to the form

只需确保正确初始化您的替换,我建议在创建变量时使用 if/else shorthand:

$class = isset($attrs['class']) ? $attrs['class'] : 'default-class-name'; //Added button style class variable 
$title = isset($attrs['title']) ? $attrs['title'] : 'SIGN UP NOW'; //Added button title variable 

这样您的 html 将始终得到替换,属性值或默认值。

我还注意到您在检查 isset($atts['title']) 时有错别字,您可能想要 $attrs 而不是 $atts

祝你好运!