get_page_by_title mit einem Apostroph in Variable

Ich habe Probleme beim Erstellen eines Shortcodes, der einige Posts abfragt. Das sind die Grundlagen meines Codes:

function shortcode_equipment($atts, $content = null) { $equipment = get_page_by_title($content, OBJECT, 'equipment'); $loop = new WP_Query( array( 'posts_per_page' => 1, 'post_type' => 'equipment', 'page_id' => $equipment->ID ) ); while( $loop->have_posts() ) { $loop->the_post(); *misc code* wp_reset_postdata(); return $string; } } add_shortcode( 'item', 'shortcode_equipment' ); 

Das funktioniert normalerweise gut für 99% meiner Posts. Er fragt den Post nach dem, was in den [item] title geschrieben ist, geht hier [/ item] shortcode und zeigt dann einen benutzerdefinierten Tooltip / Hover-Effekt entsprechend an.

Wenn mein Posttitel jedoch einen Apostroph enthält (z. B. Mal’s Post), dann bricht er ab und fragt nur ab, was immer der letzte Post in diesem benutzerdefinierten Post-Typ ist.

Also, wie bekomme ich das mit Apostrophen in den Posttiteln arbeiten?

Solutions Collecting From Web of "get_page_by_title mit einem Apostroph in Variable"

Titel Hello world!@#$%^*(),.;:\ Wird funktionieren, aber jeder eingegebene Titel, der ' " <> & Zeichen enthält, funktioniert nicht, da in $content Variable HTML-Entities Mal’s Post .

Um es zu umgehen, können Sie die function get_page_by_path zusammen mit get_page_by_path .

 function shortcode_equipment($atts, $content = null) { $path = sanitize_title($content); $equipment = get_page_by_path( $path, OBJECT, 'equipment'); 

Der restliche Code funktioniert wie zuvor.

Es ist höchstwahrscheinlich ein Fluchtproblem dort passiert. Versuchen Sie, den Titel zu umgehen, bevor Sie ihn an Ihren Shortcode übergeben, indem Sie esc_html() oder sogar esc_html() :

 $content = sanitize_title_for_query( $content ); $equipment = get_page_by_title( $content, OBJECT, 'equipment' ); 

Weitere Informationen zu Datenflucht finden Sie hier .