获取短码内部的内容并对其应用外部函数?

时间:2012-02-07 作者:Mohamed Said

function t_shortcode($atts, $content = null){
$lang = strtolower($atts[\'lang\']);

$content = "<div id=\'translator\' class=\'translate_".$lang."\'>".$content."</div>";
if($lang == $_SESSION[\'language\']):

    return $content;
endif;

}
我试图获取短代码之间的内容,在索引中对其应用函数。php并返回包含div的短代码的$内容。

我想应用于shorcode函数的第二个函数是:

function display($shortcodecontent, $noofchars){
$content2 = mb_substr($shortcodecontent,0,$noofchars);
return $content2;
}
所以我可以使用://13是字符数

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

下面添加了短代码[my_t_shortcode], 它接受一个属性“lang”,并将上述函数应用于内容。

//Add shortcodes
add_shortcode( \'my_t_shortcode\', \'wpse41477_shortcode_handler\' );

//It\'s good practise to make sure your functions are prefixed by something unique
function wpse41477_shortcode_handler( $atts, $content = null ) {
       //This will extract \'lang\' attribute as $lang. You can supply default values too.
       extract( shortcode_atts( array(
          \'lang\' => \'default_lang\',
          ), $atts ) );
    //The above lowercases all values.

    /* Apply external function. \'display\' is too generic, 
     * give it a unique prefix to prevent a clash with another plugin/theme/WordPress 
     */
    $content = wpse41477_display($content,13);
    //why not do $content = mb_substr($content,0,13); instead?

    //Apply divs
    $content = "<div id=\'translator\' class=\'translate_".$lang."\'>".$content."</div>";

    //Not sure what the following is for, but I\'ve left it in.
    if($lang == $_SESSION[\'language\']):
        return $content;
    endif;
    }
和自定义功能:

function wpse41477_display($shortcodecontent, $noofchars){
     $content2 = mb_substr($shortcodecontent,0,$noofchars);
return $content2;
}
如果这一切wpse41477_display 是的,我强烈建议您直接将其包含在shortcode处理程序中(请参阅注释)。

以上代码未经测试

结束

相关推荐

将IF语句添加到_Content()

我已经创建了自己的页面模板,其中我有一个帖子列表,直接位于内容下方,因此:<?php the_content(); ?> <?php query_posts(\'category_name=vacancies\'); ?> <ul> <?php while (have_posts()) : the_post(); ?> <li><a href=\"<?php t