What's wp ?

What's wp ?

eycatch

ショートコード

カスタ
カスタ
ブロックエディタでPHPコードを実行できないかにゃ?
ワープ
ワープ
直接PHPのコードはかけないけど、ショートコードでPHPの関数が呼び出せるにゃ。ショートコードに登録した関数に使いたいコードを書くことで、ページを表示するときに関数が実行されるにゃ。

ショートコード [hello]

PHP

<?php
add_shortcode( 'hello', 'my_shortcode_hello' );
function my_shortcode_hello()
{
	$hello = "お疲れ様です。";
	date_default_timezone_set('Asia/Tokyo');
	$h = date("H");
	if ( $h >= 5 && $h <= 11 ) {
		$hello = "おはようございます。";
	} elseif ( $h > 11 && $h <= 17 ) {
		$hello = "こんにちは。";
	} elseif ( $h > 17 && $h <= 23 ) {
		$hello = "こんばんは。";
	}
	return $hello;
}

[hello]→こんにちは。

ワープ
ワープ
こんにちは。と書くと時間によって「おはようございます。」とか「こんにちは。」とか表示されるにゃ。
カスタ
カスタ
このコードはどこに書くにゃ?
ワープ
ワープ
子テーマあるいはテーマのfunctions.php、またはプラグインのphpファイルに書くにゃ。

属性

ワープ
ワープ
属性を使って関数に渡すこともできるにゃ。

ショートコード[map area="場所" width="幅" height="高さ"]

php

<?php
add_shortcode( 'map', 'my_shortcode_map' );
function my_shortcode_map($atts)
{
	// デフォルト値
	$a = shortcode_atts( array(
		'area' => 'tokyo',
		'width' => '400',
		'height' => '300',
	), $atts );
	switch ( $a['area'] )
	{
	default:
	case 'tokyo':
		$src = 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3239.6567846112835!2d139.8085117152535!3d35.710062680187605!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x60188ed0d12f9adf%3A0x7d1d4fb31f43f72a!2z5p2x5Lqs44K544Kr44Kk44OE44Oq44O8!5e0!3m2!1sja!2sjp!4v1587207708754!5m2!1sja!2sjp';
		break;
	case 'paris':
		$src = 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d83998.94722645805!2d2.2770202530577595!3d48.85883773937257!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x47e66e1f06e2b70f%3A0x40b82c3688c9460!2z44OV44Op44Oz44K5IOODkeODqg!5e0!3m2!1sja!2sjp!4v1587208208949!5m2!1sja!2sjp';
		break;
	}
	$map = '<iframe loading="lazy" src="' . $src . '" width="' . $a['width'] . '" height="' . $a['height'] . '" frameborder="0" style="border:0;" allowfullscreen="" aria-hidden="false" tabindex="0"></iframe>';
	return $map;
}
?>

[map]

[map area="paris" width="300" height="200"]

ワープ
ワープ
場所やサイズを属性で指定するにゃ。省略もできるにゃ。

囲み型ショートコード

ワープ
ワープ
囲まれたコンテンツを関数に渡すこともできるにゃ。

[box]文章[/box]

PHP

<?php
add_shortcode( 'box', 'my_shortcode_box' );
function my_shortcode_box($atts, $content = null)
{
	$output = '<div style="padding:0.5em; margin:2em; background:#eae5cf; box-shadow:0px 0px 0px 10px #eae5cf; border:dashed 2px white; color:#866;">';
	$output .= "<p>${content}</p>";
	$output .= "</div>";
	return $output;
}

[box]ここに文章をいれるにゃ。[/box]

ここに文章をいれるにゃ。

ワープ
ワープ
ここではショートコードの例としてstyle属性でCSSを指定したけど、テーマならテーマのstyle.css、プラグインならフックでCSSファイルを追加してCSSを書いた方がいいにゃ。そうすると子テーマでCSSを上書きできるにゃ。
メリー
メリー
くわしくは以下を参照するでありますにゃ。

コメントはこちらから