wake-up-neo.net

Codieren Sie die Textzeichenfolge, die als Abfrage an die URL angehängt wird

Ich verwende derzeit einen Shortcode, der eine Schaltfläche auf ausgewählten Produktseiten einbettet. Wenn Sie auf diese Schaltfläche klicken, wird der Benutzer zu einem Kontaktformular auf einer anderen Seite geleitet und der Titel des Produkts, von dem aus auf die Schaltfläche geklickt wurde, wird als Abfragezeichenfolge an das Ende der URL des Kontaktformulars angehängt. Dieser Produkttitel wird dann aus der Abfragezeichenfolge abgerufen und automatisch in ein Feld mit der Bezeichnung "Produkte" im Kontaktformular eingetragen.

Code wie folgt:

add_shortcode( 'dynamic_contact_button', 'button_product_page' );

function button_product_page() {
global $product;
return "href='/contact-form/?products=Product:%20" .$product->get_title(). "&#contact_form'";
}

Dadurch wird eine URL wie folgt erstellt:

https://www.example.com/contact-form/?products=Product: Brown Paint - 1L&#contact_form

Es funktioniert ganz gut ... bis ein Produkttitel ein "unsicheres" Zeichen enthält, das nicht an die Abfragezeichenfolge angehängt werden kann. Wenn Sie beispielsweise in einem Produkttitel das Apostrophzeichen 'eingeben, um das Maß in Fuß anzugeben, wird die Abfragezeichenfolge dort abgeschnitten, wo eines davon angezeigt wird, was bedeutet, dass nur ein Teil des Produkttitels in das Formular übertragen wird. Ich bin sicher, dass es viele andere unsichere Zeichen gibt, die ähnliche Probleme verursachen würden.

Gibt es etwas, das ich hier zum Code hinzufügen kann, um den angehängten Produkttiteltext zu kodieren? So wird das Leerzeichen zu% 20 , ein Apostroph wird zu% 27 usw. Ich sehe Es gibt eine Urlencode-Option in PHP, aber ich verstehe nicht, wie ich sie implementieren könnte

2
ConM

Um die URL zu verschlüsseln, können Sie die Funktion PHP urlencode( $url ) oder die Funktion WordPress urlencode_deep( $array | $str ); verwenden.

add_shortcode( 'dynamic_contact_button',    'button_product_page' );

function button_product_page() {
    global $product;
    return urlencode( "/contact-form/?products=Product:%20" .$product->get_title(). "&#contact_form" );
}

links:

WordPress - urlencode_deep

urlencode

4
John Zenith

Die Funktion url_encode ist Ihr Freund. Sie ist eine Standardfunktion PHP, die Zeichenfolgen in ein URL-gültiges Format codiert

2
Tom J Nowell