我想创建一个快捷码,用于在我的帖子和页面中放置新闻稿选择框。但是,根据页面或帖子的不同,我希望选择加入框有不同的标题和描述。
我创建了一个短代码新闻稿。包含以下代码的php文件:
<?php
function newsletter(){
return <<<HTML
<div class="newsletterForm">
<h3>Newsletter Box Headline</h3>
<p>Newsletter Box Description</p>
<form method="post" action="https://domain.com/newsletter/z2o7q6">
<input type="hidden" name="ml-submit" value="1">
<div class="newsletterFields">
<div class="newsletterEmail">
<input required="" type="email" class="newsletterInput" name="fields[email]"
placeholder="Your email...">
</div>
<div class="newsletterButton">
<input type="submit" class="newsletterSubmit" value="Subscribe">
</div>
</div>
<div class="newsletterDisclaimer">
<p>Newsletter Box Disclaimer</p>
</div>
</form>
</div>
HTML;
}
?>
在函数中。我添加的php:
include(\'shortcode-newsletter.php\');
add_shortcode( \'newsletter\', \'newsletter\' );
现在,我想要一个带有自定义参数的快捷码:
[newsletter url="formActionUrl" headline="newsletterHeadline" description="newsletterDescription"]
但我不知道如何更改第一个代码来定制这些参数。
谢谢你的帮助!
最合适的回答,由SO网友:Antti Koskinen 整理而成
根据shortcode文档,您的shortcode回调将接收用户在$atts
变量您可以将它们与可能具有的任何默认值组合在一起shortcode_atts()
.
function newsletter( $atts ) {
$atts = shortcode_atts(
array(
\'url\' => \'https://domain.com/newsletter/z2o7q6\', // change default value as needed
\'headline\' => \'Newsletter Box Headline\', // change default value as needed
\'description\' => \'Newsletter Box Description\', // change default value as needed
),
$atts,
\'newsletter\'
);
// you can access parameters with $atts[\'url\'], $atts[\'headline\'], and $atts[\'description\']
// e.g <h3><?php echo esc_html($atts[\'headline\']); ?></h3>
}