Verwenden Sie die Methode esc_html__(), um eine Zeichenfolge plus eine Platzhaltervariable in WordPress auszugeben

Lesezeit: 2 Minuten

Benutzeravatar von Tim Darius
Tim Darius

In einer Anzeige von WordPress habe ich die esc_html__() -Methode, um die Zeichenfolge zu maskieren und Variablen zur sicheren Verwendung in der HTML-Ausgabe hinzuzufügen.

Mein Code ist wie folgt:

<?php
global  $product, $post;
$posts_id = $product->get_id(); 
$reserve_price = get_post_meta($posts_id, '_auction_reserved_price', true);

if ($product->is_reserved() === true && $product->is_reserve_met() === false) : ?>

<p class="reserve hold"  data-auction-id="<?php echo esc_attr( $product->get_id() ); ?>">
    <?php echo apply_filters('reserve_bid_text', esc_html__('Reserve price has not been met, needed to enter $ %s or more', 'wc_simple_auctions', $reserve_price)); ?>
</p>

<?php endif; ?>

Aber meine Variable wird nicht auf den Endwert ausgegeben, die Ausgabezeichenfolge, die ich bekomme, ist diese:

Mindestpreis

Ich habe es vorher versucht $reserve_price ist eine nicht leere Variable, aber esc_html__() gibt nicht die richtigen Informationen an die Seite aus.

Ich bin mir über diesen Grund nicht ganz sicher.

“Ich habe es versucht, bevor $reserve_price eine nicht leere Variable ist, aber esc_html__() gibt nicht die richtigen Informationen an die Seite aus.”

Sie können nicht verwenden Platzhalter in esc_html__() Funktion. Es ruft nur die Übersetzung eines bestimmten Textes ab und maskiert ihn zur sicheren Verwendung in der HTML-Ausgabe. Das heißt, Sie können es verwenden, um:

  • Escape-HTML-Markups + Übersetzung

Wenn Sie jedoch Folgendes benötigen:

  • Escape-HTML-Markups + Übersetzung + Platzhalter

Dann könnten Sie die Kombination von verwenden esc_html, sprintf und __() funktioniert so:

$test_value="<strong>5.7<strong>";

echo esc_html(
       sprintf(
         __('This is a test for %s', 'your-text-domain'),
         $test_value
       )
     )

Was dies ausgeben wird:

Geben Sie hier die Bildbeschreibung ein

Und wenn der bereitgestellte Text keine HTML-Tags hat, dann wäre es ungefähr so:

$test_value = 5.7;

echo esc_html(
       sprintf(
         __('This is a test for %s', 'your-text-domain'),
         $test_value
       )
     )

Geben Sie hier die Bildbeschreibung ein


Wenn wir nun die gleichen Prinzipien auf Ihr Snippet anwenden, würde es ungefähr so ​​​​aussehen:

<p class="reserve hold" data-auction-id='<?php echo esc_attr($product->get_id()); ?>'>
    <?php
    echo apply_filters(
        'reserve_bid_text',
        esc_html(
            sprintf(
                __('Reserve price has not been met, needed to enter $ %s or more', 'wc_simple_auctions'),
                $reserve_price
            )
        )
    );
    ?>
</p>

Lassen Sie mich wissen, ob Sie es zum Laufen bringen könnten!

  • Danke, ich kann den Inhalt nach der Verwendung von sprintf() normal ausgeben.

    – Tim Darius

    2. Dezember 2021 um 15:37 Uhr

1427330cookie-checkVerwenden Sie die Methode esc_html__(), um eine Zeichenfolge plus eine Platzhaltervariable in WordPress auszugeben

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

Privacy policy