Div-Wrap with Functions.php in ChildTheme Using Shorcode!

时间:2018-04-03 作者:MonTea

我只想为一个简单样式的DIV包装器创建一个短代码。

在WordPress的网站上,我想添加如下内容:

[quotehead]Headline text[/quotehead]
...a normal blockquote from wordpress...
输出应为:

<div class="block_header">Headline text</div>
我的内部功能functions.php (在childtheme中)包含以下内容:

/**
 * Function block_header_start
 **/
function block_header_start()
{
    return (\'<div class="block_header">\');
}

/**
 * Function block_header_end
 **/
function block_header_end()
{
    return (\'</div>\');
}

add_shortcode(\'blockhead\',\'block_header_start\');
add_shortcode(\'/blockhead\',\'block_header_end\');
但输出如下:

<div class="block_header">
    <p>&nbsp;</p>
    <blockquote>...my content of blockquote...</blockquote>
</div>
问题:新包装中的文字不会出现在前端
是否可以只使用一个短代码,并将下面的内容包装在一个函数中,直到该行的末尾。。

类似于此处标题或标记文件的前导#?

还是仅仅是包装的变体,这样就行了?

我的失败在哪里?

1 个回复
最合适的回答,由SO网友:Frank P. Walentynowicz 整理而成

短代码有两种类型:

[shortcodename param1 = value, ..., param-n = value]
以及

[shortcodename param-1 = value, ..., param-n = value]some content[/shortcodename]
在这两种情况下,add_shortcode(\'shortcodename\', \'functionname\') 功能相同。

这个functionname() 函数的参数,确定将使用哪种口味:

functionname($atts) 表示没有结束标记的短代码,并且functionname($atts, $content) 用于在开始标记和结束标记之间具有任意内容的短代码。

在我们的情况下,应使用第二种类型:

function my_block_header($atts, $content) {
    return \'<div class="block_header">\' . $content . \'</div>\';
}
add_shortcode(\'blockhead\', \'my_block_header\');
用作:

<blockquote>
    [blockhead]Headline text[/blockhead]
    ... quoted text ...
</blockquote>
Note: 第二add_shortcode, 在您的代码中是不必要的,也是不正确的,因为shortcode标记不能以/ 一个字符和一个短代码就足够返回一个除法,包括开头和结尾标记。此外,代码中的两个短代码函数都缺少必需的参数。

结束

相关推荐

ADD_FILTER IMG_CAPTION_SHORTCODE未实现

在我正在创建的插件中,我需要更改[caption]. 我是这样做的(就像《法典》和这里的其他例子一样)add_filter(\'img_caption_shortcode\', \'caption_fix\', 10, 3); function caption_fix ($x, $att, $content) { $content = \'new caption\' ; // change it return $content; } 但是[caption]