Shortcode API参数被拒绝,就像国会分会中的逻辑一样

时间:2015-01-14 14:30:23

标签: php wordpress shortcode

我看过这个次数的次数超过了我的可能数,但不能为我的生活弄清楚我做错了什么。我过去曾多次编写短代码函数,也是我可以计算的次数。无论出于何种原因,这个人都拒绝正常工作。经过一个小时的反复尝试,我没有找到成功。请帮忙。

默认值出现在html中,但不会反映短代码中设置的参数。

  • 我尝试将ID视为字符串和整数。
  • 也许wordpress不喜欢我试图使用attr ID ...尝试listID,仍然失败。
  • 我尝试使用extract vs将shortcode_attr()的结果保存到变量中。
  • 想到可能是插件或post_type阻止我获胜,但是从Wordpress.org获取示例短代码API代码并将其插入到functions.php并将其短代码放入我的帖子中,它就可以了。 我疯了
  • 我已经清除了对象缓存,为了调试它,我已经更改了函数中的默认值,这些默认值在更改后立即显示在客户端。
  • 也许Shortcode API并不像我构建字符串。使用ob_start()ob_get_clean()将其保存到缓冲区中(比如,洗个澡?)... 没有快乐
  • 不,var_dumpprint_r无助于我,没有输出。即使我尝试var_dump(array('foo' => 'bar'))print_r(array('foo' => 'bar'))

我的理智现在正在进行超出合理测量的测试,我幻想着DDOS Matt Mullenweg的智能手机

请治愈我的疯狂,指出我显然忽略的微小细节所以我可以继续我的一天。

简码

[subscription ID="1" referrer="overlay-promotion" buttonText="Send it to me" buttonBGHex="#000c49"]

功能

function subscription_form($atts){
    //Yes, I tried extract to, and yes, I changed the variables in the html below to reflect this change.
    $a = shortcode_atts( array(
        "ID" => "1",
        "referrer" => "not-what-you-think-this-should-be",
        "buttonText" => "Subscribe",
        "buttonBGHex" => "#78C138"
    ), $atts, "subscription" );

    $html = '<form id="subscribe" name="email_signup" class="form-inline validate" action="http://www.example.com/subscribe" method="post">';
    $html .= '<input type="hidden" name="referrer" value="'.$a["referrer"].'">';
    $html .= '<input type="hidden" name="success_url" value="http://www.example.com/subscribe/success">';
    $html .= '<input type="hidden" name="error_url" value="http://www.example.com/subscribe/error">';
    $html .= '<input type="hidden" name="list_id" value="'.$a["ID"].'">';
    $html .= '<input type="text" placeholder="Enter your email address" class="input-large" name="email">';
    $html .= '<input type="submit" class="btn btn-primary" style="background-color:'.$a["buttonBGHex"].';" name="submit" value="'.$a["buttonText"].'">';
    $html .= '</form>';

    return $html;
}
add_shortcode( 'subscription', 'subscription_form' );

enter image description here

输出

<form id="subscribe" name="email_signup" class="form-inline validate" action="https://www.example.com/subscribe" method="post">
<input type="hidden" name="referrer" value="HP-overlay-2015">
<input type="hidden" name="success_url" value="https://www.example.com/subscribe/success">
<input type="hidden" name="error_url" value="https://www.example.com/subscribe/error">
<input type="hidden" name="list_id" value="1"><input type="text" placeholder="Enter your email address" class="input-large" name="email">
<input type="submit" class="btn btn-primary" style="background-color:#78C138;" name="submit" value="Subscribe">
</form>

enter image description here

1 个答案:

答案 0 :(得分:1)

根据add_shortcode的Codex,短代码的属性名称将转换为小写。

  

短代码属性名称在传递到处理函数之前始终会转换为小写。值不受影响。

这意味着您需要使用小写版本访问数组键以获得正确的输出。