私はボタンのためのHTMLを吐き出す小さなプラグインを書きました。ユーザーが画像を指定しなかった場合、画像は壊れているように見えます。ユーザーが画像を指定したかどうかを確認して確認する方法はありますか。その場合は、画像コードのみを印刷します。
これが私のプラグインコードです:
function button_shortcode($args) {
return "<a class=\"button\" href=\"" . $args["url"] . "\"><img alt=\"" . $args["bigtext"] . "\" class=\"alignleft\" src=\"" . $args["img"] . "\" /><small>" . $args["smalltext"] . "</small>" . $args["bigtext"] . "</a>";
}
add_shortcode("button", "button_shortcode");
これがショートコードです。
[button url="http://www.example.com/" img="/path/to/image.png" smalltext="Smaller Text" bigtext="Bigger Text"]
Borekは正しい方向を示しました、これが私の良いコードです*:
function button_shortcode($attributes, $content) {
if ($attributes["image"] != "") {
$img = "<img alt=\"" . $content . "\" class=\"alignleft\" src=\"" . $attributes["image"] . "\" />";
} else {
$img = "";
}
if ($attributes["intro"] != "") {
$intro = "<small>" . $attributes["intro"] . "</small>";
}
return "<a class=\"button\" href=\"" . $attributes["link"] . "\">" . $img . $intro . $content . "</a>";
}
add_shortcode("button", "button_shortcode");
*注:私はいくつかの属性名とものも変更しましたが、それは必要ではありませんでした。
さて、私はそれが以下をするように関数を書き直しました:
HTMLの作成方法に注目してください。文字列を分割して開く、引用符をエスケープするなどの操作は面倒で読みにくいです。 HTML文字列を作成するときは一重引用符を使用して、二重引用符をエスケープせずに使用できるようにします。
私はまたsprintf()を使用し、それから私が欲しい各部分を置き換えます。読みやすく、後で修正します。
それが役に立てば幸い!
function button_shortcode($args) {
if ( empty( $args['img'] ) ) {
return 'Error - no image source was specified';
}
$sBigText = isset( $args['bigtext'] )? $args['bigtext'] : '';
$sSmallText = isset( $args['smalltext'] )? $args['smalltext'] : '';
$sHtmlToReturn = sprintf( '<img alt="%s" class="alignleft" src="%s" /><small>%s</small>%s', $sBigText, $args['img'], $sSmallText, $sBigText );
if ( !empty( $args['url'] ) ) {
$sHtmlToReturn = sprintf( '<a class="button" href="%s">%s</a>', $args['url'], $sHtmlToReturn );
}
return $sHtmlToReturn;
}
ポール.
デフォルトの画像をこの変数に代入するだけではどうでしょうか。画像が指定されていない場合は、デフォルトの(空ではなく)画像のURLが使用されますか?ところで。これらのバックスラッシュについてはどうですか?一重引用符と二重引用符を使用してください。
function button_shortcode($args) {
extract(shortcode_atts($default=array(
'url' => 'http://default.com',
'bigtext' => 'Your default big text',
'img' => 'http://your-default-img-path.com/img.png',
'small' => 'Your default small text',
), $args));
return '<a class="button" href="' . $url . '"><img alt="' . $bigtext . '" class="alignleft" src="' . $img . '" /><small>' . $smalltext . '</small>' . $bigtext . '</a>';
}
add_shortcode("button", "button_shortcode");
今、あなたが別々のボタンを出力する必要があるならば(画像が存在するかどうかにかかわらず)、その時のように条件式を使います:
function button_shortcode($args) {
extract(shortcode_atts($default=array(
'url' => 'http://default.com',
'bigtext' => 'Your default big text',
'img' => '',
'small' => 'Your default small text',
), $args));
if (!empty($url)) {
$button_output = '<a class="button" href="' . $url . '"><img alt="' . $bigtext . '" class="alignleft" src="' . $img . '" /><small>' . $smalltext . '</small>' . $bigtext . '</a>';
} else {
$button_output = '<a class="button" href="' . $url . '"><small>' . $smalltext . '</small>' . $bigtext . '</a>';
}
return $button_output;
}
add_shortcode("button", "button_shortcode");