我正在尝试使用短代码来表示词汇表功能。该函数连接到数据库,查询单词并返回定义。
目前,如果我使用自动关闭的短代码,它会起作用。
例如:
function defineGlossary($atts) {
extract(shortcode_atts(array(
'term' => '0'
), $atts));
// connect to database and grab definition
$glossary_output .= "<span title='";
$glossary_output .= $result_definition;
$glossary_output .= "'>";
$glossary_output .= $term;
$glossary_output .= "</span>";
return $glossary_output;
}
add_shortcode("glossary", "defineGlossary");
[glossary =“administrator”]作为短代码适用于此代码。它返回
<span title="definition pulled from the database">administrator</span>.
我更喜欢使用封闭的短语,如[词汇表]管理员[/ glossary]不幸的是,我不能让它工作,因为我不知道如何(或者是否可能)将$ content作为变量(发送到数据库并找到定义)。
从下面更新。如果我将其简化为:
<?php
function defineGlossary($atts, $shortcodeContent = null) {
$glossary_output .= "<span title='";
$glossary_output .= "Sample Definition";
$glossary_output .= "'>";
$glossary_output .= $shortcodeContent;
$glossary_output .= "</span>";
return $glossary_output;
}
add_shortcode("glossary", "defineGlossary");
?>
并使用[glossary] administrator [/ glossary]它只返回内容中的[glossary]管理员。
答案 0 :(得分:2)
只需在函数中添加第二个变量即可处理短代码内容。如果它存在,它将被传递。
function defineGlossary($atts, $shortcodeContent = null) {
if (is_null( $content )) {
//handle if shortcode isn't defined
}
// connect to database and grab definition
$glossary_output .= "<span title='";
$glossary_output .= $result_definition;
$glossary_output .= "'>";
$glossary_output .= $shortcodeContent;
$glossary_output .= "</span>";
return $glossary_output;
}
add_shortcode("glossary", "defineGlossary");
我没有对此进行测试,但我认为它可以满足您的需求。