一个短码的多个参数

时间:2013-02-04 作者:Abhik

我正在为我的博客构建一些短代码。我可以为我的短代码设置一个参数,但不知道如何设置不同的参数。

例如,我可以使用[myshortcode myvalue] 在帖子内容中输出html块。

以下是我当前使用的内容:

function test_shortcodes( $atts ) {
    extract( shortcode_atts( array(
        \'myvalue\' => \'<div class="shortcodecontent"></div>\'

    ), $atts ) );

    return $myvalue;
}
add_shortcode( \'myshortcode\', \'test_shortcodes\' );
现在,我如何使用[myshortcode myothervalue] 要输出不同的html块?

请注意,短代码是相同的,只更改了参数。

5 个回复
SO网友:Bainternet

让我们看看短代码

[SH_TEST var1="somevalue" var2="someothervalue"]THE SHORTCODE CONTENT[/SH_TEST]
shortcode处理程序函数接受3个参数

  1. $atts - 在我们的示例中,通过短代码传递的属性数组:

    • $atts[\'var1\'] 设置为\'somevalue\'
    • $atts[\'var2\'] 设置为\'someothervalue\'
  2. $content - 是一个包含在shortcode标记中的值的字符串,在我们的示例中:-$content 设置为THE SHORTCODE CONTENT

  3. $tag - 是shortcode标记的字符串,在本例中:-$tag 设置为SH_TEST

创建快捷码时,通常会定义默认值,并将其与快捷码标记提交的值合并,例如:

add_shortcode(\'SH_TEST\',\'SH_TEST_handler\');
function SH_TEST_handler($atts = array(), $content = null, $tag){
    shortcode_atts(array(
        \'var1\' => \'default var1\',
        \'var2\' => false
    ), $atts);

    if ($atts[\'var2\'])
          return \'myothervalue\';
    else
          return \'myvalue\'; 
}

SO网友:fuxia

如果你用这样的短代码atts[0] 将包含以下值:

add_shortcode( \'test\', \'test_callback\' );

function test_callback( $atts )
{
    return $atts[0];
}
另一种方法是使用名称调用值:

[myshortcode val="myvalue"]

function test_callback( $atts )
{
    return $atts["val"];
}

SO网友:WP Themes

你最好这样做:

function test_shortcodes( $atts ) {
    extract( shortcode_atts( array(
        \'type\' => \'myvalue\'

    ), $atts ) );

    switch( $type ){
        case \'myvalue\': 
            $output = \'<div class="shortcodecontent"></div>\';
            break;

        case \'myothervalue\': 
            $output = \'<div class="othershortcodecontent"></div>\';
            break;

        default:
            $output = \'<div class="defaultshortcodecontent"></div>\';
            break;
    }

    return $output;
}
add_shortcode( \'myshortcode\', \'test_shortcodes\' );
使用方法如下:

[myshortcode type="myvalue"] 至输出<div class="shortcodecontent"></div>

[myshortcode type="myothervalue"] 至输出<div class="othershortcodecontent"></div>

SO网友:Delorme Grant

这种方式在使用[myshortcode type=“myvalue”]的所有情况下都适用于我

function test_shortcodes( $atts = array() ) {
extract( shortcode_atts( array(
    \'type\' => \'myvalue\'

), $atts ) );

switch( $atts[\'type] ){
    case \'myvalue\': 
        $output = \'<div class="shortcodecontent"></div>\';
        break;

    case \'myothervalue\': 
        $output = \'<div class="othershortcodecontent"></div>\';
        break;

    default:
        $output = \'<div class="defaultshortcodecontent"></div>\';
        break;
}

return $output;
}
add_shortcode( \'myshortcode\', \'test_shortcodes\' );
如果要添加另一个参数,只需执行以下操作

test_shortcodes( $atts = array() ) {
extract( shortcode_atts( array(
    \'type\' => \'myvalue\', //Could be default
    \'other\' => \'somevalue\' //Could be default

), $atts ) );

switch( $atts[\'other\'] ){
    case \'somevalue\': 
        $output = \'<div class="shortcodecontent">somevalue</div>\';
        break;

    case \'myothervalue\': 
        $output = \'<div class="othershortcodecontent"></div>\';
        break;

    default:
        $output = \'<div class="defaultshortcodecontent"></div>\';
        break;
}

return $output;
}
add_shortcode( \'myshortcode\', \'test_shortcodes\' );
我希望这有帮助

SO网友:Amritosh pandey

首先,您必须在函数中定义$atts项,因为$atts是一个数组。

下面是在shortcode中传递变量的完整代码-

假设您需要通过短代码显示一个类别的所有产品,您需要在函数文件中执行以下代码-

 function creative_writing_func($atts) {
 $args = array(
\'post_type\'      => \'product\',
\'posts_per_page\' => 10,
\'product_cat\'    => $atts[\'categoryname\']
);

$loop = new WP_Query( $args );

while ( $loop->have_posts() ) : $loop->the_post();
global $product;
echo \'<br /><a href="\'.get_permalink().\'">\' . 
woocommerce_get_product_thumbnail().\' \'.get_the_title().\'</a>\';
endwhile;

wp_reset_query();
}

add_shortcode(\'creative_writing_func_short\', \'creative_writing_func\');
现在,您只需将短代码粘贴到模板文件或Wordpress默认编辑器中即可-

  [creative_writing_func_short categoryname="creative-writing-english-literature"]
我们在短代码中传递类别名称(英语文学创作)。

已经对其进行了测试,并且正在运行。

结束

相关推荐

Get URL from shortcode tag

我正在运行一个wordpress站点,我需要正确的regex语法来从\\u content()中返回的一些短代码中获取URL。当我使用\\u content()时,它将返回如下内容:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nulla enim, euismod ut pharetra nec, commodo a augue. Etiam sit amet nibh mauris, eu ornare purus. V