web-dev-qa-db-ja.com

ショートコードの複数のパラメータ

私は私のブログのためにいくつかのショートコードを作ることに取り組んでいます。ショートコードに1つのパラメータを設定できますが、別のパラメータを設定する方法がわかりません。

たとえば、投稿コンテンツ内にhtmlブロックを出力するために[myshortcode myvalue]を使用できます。

これが私が現在使っているものです:

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

    ), $atts ) );

    return $myvalue;
}
add_shortcode( 'myshortcode', 'test_shortcodes' );

では、[myshortcode myothervalue]を使用して別のHTMLブロックを出力するにはどうすればよいでしょうか。

ショートコードは同じで、パラメータのみが変更されていることに注意してください。

1
Abhik

ショートコードを見てみましょう

[SH_TEST var1="somevalue" var2="someothervalue"]THE SHORTCODE CONTENT[/SH_TEST]

ショートコードハンドラ関数は3つのパラメータを受け入れます

  1. $atts - この場合、ショートコードによって渡される属性の配列。

    • $atts['var1']'somevalue'に設定されています
    • $atts['var2']'someothervalue'に設定されています
  2. $content - ショートコードタグで囲まれた値の文字列です。この場合、-$contentTHE SHORTCODE CONTENTに設定されます。

  3. $tag - 短いコードタグの文字列です。この場合、-$tagSH_TESTに設定されます。

私がショートコードを作成するとき、私は通常デフォルト値を定義し、それらをショートコードタグexによって提出された値とマージします:

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'; 
}
5
Bainternet

あなたがそのようなショートコードを使うならば、atts[0]は値を含みます:

add_shortcode( 'test', 'test_callback' );

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

もう1つの方法は、名前を付けて値を呼び出すことです。

[myshortcode val="myvalue"]

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

この方法は[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' );

そして別のパラメータを追加したいのであれば、これだけです[myshortcode type = "myvalue" other = "somevalue"]。

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' );

これが役立つことを願っています

0
Delorme Grant

次のようにした方がいいでしょう。

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>

0
WP Themes