Ich habe ein kleines Plugin geschrieben, das HTML für einen Button ausspuckt. Abgesehen von einem Punkt funktioniert es hervorragend: Wenn der Benutzer kein Bild angibt, wird das Bild als fehlerhaft angezeigt. Kann ich überprüfen, ob der Benutzer ein Bild angegeben hat, und den Bildcode nur dann ausdrucken, wenn dies der Fall ist?
Hier ist mein Plugin-Code:
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");
Hier ist der Shortcode:
[button url="http://www.example.com/" img="/path/to/image.png" smalltext="Smaller Text" bigtext="Bigger Text"]
Borek zeigte in die richtige Richtung, hier ist mein Code *:
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");
* Hinweis: Ich habe auch einige der Attributnamen und -materialien geändert, aber das war nicht erforderlich.
Okay, ich habe die Funktion so umgeschrieben, dass sie Folgendes bewirkt:
Beachten Sie, wie ich Ihr HTML erstellt habe. Das Brechen und Öffnen von Zeichenketten und das Entkommen von Anführungszeichen usw. ist chaotisch und schwer zu lesen. Verwenden Sie einfache Anführungszeichen, wenn Sie HTML-Zeichenfolgen erstellen, damit Sie doppelte Anführungszeichen verwenden können, ohne sie zu maskieren.
Ich habe auch sprintf () verwendet und dann jedes Stück, das ich will, ersetzt. Viel einfacher zu lesen und später zu ändern.
Ich hoffe es hilft!
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;
}
Paul.
Wie wäre es einfach, dieser Variablen ein Standardbild zuzuweisen? Wenn also kein Bild angegeben ist, wird eine Standard-Bild-URL (anstelle einer leeren) verwendet. Übrigens. Was ist mit diesen Backslashes? Verwenden Sie einfach einfache und doppelte Anführungszeichen.
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");
Wenn Sie nun separate Schaltflächen ausgeben müssen (ob ein Bild vorhanden ist oder nicht), verwenden Sie folgende Bedingungen:
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");