WordPress 3.9.x – Entfernen Sie die Inline-Breite aus dem Zahlenelement

Lesezeit: 3 Minuten

Benutzer-Avatar
Nick J.

Ab WordPress 3.9 können Sie der functions.php eine Codezeile hinzufügen, um WordPress anzuweisen, Bilder mit Bildunterschriften mit den semantischeren figure- und figcaption-Elementen auszugeben:

add_theme_support( 'html5', array(
'search-form', 'comment-form', 'comment-list', 'gallery', 'caption'
) );

Das ist toll. Aber aus irgendeinem Grund fügt WordPress dem figure-Element einen Inline-Stil für die Breite hinzu, der verhindert, dass die gesamte Einheit reagiert. Das ist nicht toll. Ich möchte der functions.php Code hinzufügen, der WordPress mitteilt, die Inline-Breite nicht einzuschließen.

In der Datei media.php habe ich den Untertitel-Shortcode gefunden, der mein Problem anspricht:

$output = apply_filters( 'img_caption_shortcode', '', $attr, $content );
if ( $output != '' )
return $output;

$atts = shortcode_atts( array(
'id'      => '',
'align'   => 'alignnone',
'width'   => '',
'caption' => '',
'class'   => '',
), $attr, 'caption' );

$atts['width'] = (int) $atts['width'];
if ( $atts['width'] < 1 || empty( $atts['caption'] ) )
return $content;

if ( ! empty( $atts['id'] ) )
$atts['id'] = 'id="' . esc_attr( $atts['id'] ) . '" ';

$class = trim( 'wp-caption ' . $atts['align'] . ' ' . $atts['class'] );

if ( current_theme_supports( 'html5', 'caption' ) ) {
return '<figure ' . $atts['id'] . 'style="width: ' . (int) $atts['width'] . 'px;" class="' . esc_attr( $class ) . '">'
. do_shortcode( $content ) . '<figcaption class="wp-caption-text">' . $atts['caption'] . '</figcaption></figure>';
}

Irgendwelche Ideen, wie man die Inline-Stilbreite aus dem figure-Element entfernt?

Edit: Ich habe die Lösung gefunden hier.

Es gibt ein Filter für Ihre Frage:

Irgendwelche Ideen, wie man die Inline-Stilbreite aus dem figure-Element entfernt?

add_filter('img_caption_shortcode_width', '__return_false');

Dadurch bleibt das figure-Element ohne Style-Attribut-Mist

  • Dies ist eine einfache Lösung. Vielen Dank!

    – Nick J.

    12. Juni 2018 um 22:44 Uhr

Ich fühle deinen Schmerz Nick.

Wenn Sie sich die ersten paar Codezeilen ansehen, die Sie eingefügt haben, werden Sie sehen, dass, wenn Sie ein Ergebnis des Aufrufs apply_filter zurückgeben, es stattdessen verwendet wird.

Hier ist, was ich getan habe.

Haken Sie zuerst den Filter ein …

/** Register the html5 figure-non-responsive code fix. */
add_filter( 'img_caption_shortcode', 'myfix_img_caption_shortcode_filter', 10, 3 );

Erstellen Sie jetzt einfach myfix_img_caption_shortcode_filter mit dem Code aus der Mediendatei (im Wesentlichen den Code, den Sie eingefügt haben).

function matajas1_img_caption_shortcode_filter($dummy, $attr, $content) {
$atts = shortcode_atts( array(
    'id'      => '',
    'align'   => 'alignnone',
    'width'   => '',
    'caption' => '',
    'class'   => '',
), $attr, 'caption' );

$atts['width'] = (int) $atts['width'];
if ( $atts['width'] < 1 || empty( $atts['caption'] ) )
    return $content;

if ( ! empty( $atts['id'] ) )
    $atts['id'] = 'id="' . esc_attr( $atts['id'] ) . '" ';

$class = trim( 'wp-caption ' . $atts['align'] . ' ' . $atts['class'] );

if ( current_theme_supports( 'html5', 'caption' ) ) {
    return '<figure ' . $atts['id'] . 'style="max-width: ' . (int) $atts['width'] . 'px;" class="' . esc_attr( $class ) . '">'
    . do_shortcode( $content ) . '<figcaption class="wp-caption-text">' . $atts['caption'] . '</figcaption></figure>';
}

// Return nothing to allow for default behaviour!!!
return '';
}

Im Wesentlichen habe ich nur die “Breite” in “Max-Breite” geändert

Hoffe, es funktioniert für Sie und danke der Nachfrage … Ich bin froh, dass es nicht nur mir so geht!

  • Dieser Filter entfernt immer noch nicht die Breiten- und Höhenattribute aus dem IMG-Tag innerhalb des FIGURE-Elements. Es wendet einfach einen Inline-Stil mit maximaler Breite auf das FIGURE-Element an. Ich werde noch nach einer saubereren Lösung suchen. Vielen Dank.

    – Nick J.

    17. Oktober 2014 um 4:56 Uhr

  • Ich habe die Lösung mit dem Code-Snippet auf der folgenden Website gefunden: blog.skunkbad.com/wordpress/…

    – Nick J.

    17. Oktober 2014 um 5:31 Uhr


1158090cookie-checkWordPress 3.9.x – Entfernen Sie die Inline-Breite aus dem Zahlenelement

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy