質問: ショートコードに属性が存在するかどうかを確認する 私はボタンのための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"]
回答: さて、私はそれが以下をするように関数を書き直しました: 使用する前に、配列の値が設定されていることを確認してください。あなたはいつも彼らがそこにいるとは限らない。 画像が空の場合は、エラーメッセージが表示されます。これがあなたが望むものであるかどうかわからないが、あなたはそれを削除することができます。 最初にあなたの画像のhtmlを作成します。 次に、urlが指定されている場合は、リンクのhtmlに画像がまとめられています。そうでなければ、それは単にあなたの画像のhtmlを返すでしょう。 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; } ポール.