是否使用自定义内容属性的快捷码?

时间:2012-07-13 作者:RodeoRamsey

我正在为客户端网站创建一个短代码,它应该显示一个图像和一句话(主要在页面底部,但基本上是在客户端希望插入所述图像/话的任何地方)。图像将保持不变,并将有一个“标准的说法”,但客户希望有可能改变每页的说法。

我有以下工作代码,在使用[call_to_action] 短代码:

<?php 
function shortcode_call_to_action() { 
$stylesheetdir = get_bloginfo(\'stylesheet_directory\');
return \'<div id="call_to_action"> <img src="\' . $stylesheetdir . \'/images/call_to_action.jpg" /> 
        <p>Lorem ipsum dolor sit amet, jus ludus dignissim delenit incassum adipiscing, letalis ymo loquor populus sed saepius. Quod regula vulputate eum nulla, feugait foras ex ideo. </p>\' ;
}
add_shortcode(\'call_to_action\', \'shortcode_call_to_action\');    
?>
不知何故,我想做的是在那里的某个地方添加一个属性,以便客户端可以通过在短代码中更改call\\u to\\u操作文本来更改/覆盖它:

[call_to_action]This would be the new overwritten text that would show up if inserted here.[/call_to_action]

我还希望它尊重可能使用的任何html(段落和/或分隔符)标记。如有必要,愿意重写以前的函数。我是一个php noob,所以我似乎无法理解这一点。非常感谢您的帮助。谢谢SE!

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

shortcode函数的第二个参数是内容。因此,重写函数:

function shortcode_call_to_action( $attributes = NULL, $content = \'\' ) 
{ 
    $stylesheetdir = get_bloginfo(\'stylesheet_directory\');

    if ( \'\' === $content )
    {   // use a default text if there is no content
        $content = \'default text\';
    }

    return "<div id=\'call_to_action\'> <img src=\'$stylesheetdir/images/call_to_action.jpg\' alt=\'\' /> 
        <p>$content</p>";
}
如果用户写入…

[call_to_action]Custom text[/call_to_action]
…参数$content 在您的函数中将设置为该文本。

有关更多详细信息,请参阅Shortcode API.

结束

相关推荐

在Functions.php中创建“无文件”页面模板

(所谓“页面模板”,我指的是具有\"Template Name\" header 可在管理页面的“模板”下拉字段中选择。)在多个实例中,我构建了页面模板,可以通过挂接到\\u内容或pre\\u get\\u帖子或类似的内容来完成。这让我想知道是否有一种方法可以在functions.php 或者不创建主题文件本身的插件。我想这样做的原因:在我想到的场景中,我通常只是复制页面。php几乎一字不差。这意味着将来对页面的任何更改。php需要制作两次。随着儿童主题的更新,这更加令人痛苦</我喜欢“模板”字段U