私は私のブログのためにいくつかのショートコードを作ることに取り組んでいます。ショートコードに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ブロックを出力するにはどうすればよいでしょうか。
ショートコードは同じで、パラメータのみが変更されていることに注意してください。
ショートコードを見てみましょう
[SH_TEST var1="somevalue" var2="someothervalue"]THE SHORTCODE CONTENT[/SH_TEST]
ショートコードハンドラ関数は3つのパラメータを受け入れます
$atts
- この場合、ショートコードによって渡される属性の配列。
$atts['var1']
は'somevalue'
に設定されています$atts['var2']
は'someothervalue'
に設定されています$content
- ショートコードタグで囲まれた値の文字列です。この場合、-$content
はTHE SHORTCODE CONTENT
に設定されます。
$tag
- 短いコードタグの文字列です。この場合、-$tag
はSH_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';
}
あなたがそのようなショートコードを使うならば、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"];
}
この方法は[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' );
これが役立つことを願っています
次のようにした方がいいでしょう。
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>