Veröffentlichen Sie nur eine Facebook-URL ohne vollständiges Code-Snippet

Ziel: Facebook-URL (ohne vollständiges Code-Snippet) in Facebook-Post auf Frontend der Website umwandeln

Problem: Das experimentelle o2 / p2 / atme-Thema konvertiert standardmäßig ein vollständiges Facebook-Code-Snippet im Editor in einen vollständigen Facebook-Post im Frontend. Beispielschnipsel:

Ich möchte stattdessen nur in der Lage sein, nur die URL in den Editor zu posten und die URL mit

der Quellcode

Ich nehme an, ich müsste dies über functions.php tun?

Solutions Collecting From Web of "Veröffentlichen Sie nur eine Facebook-URL ohne vollständiges Code-Snippet"

Beachten Sie, dass Facebook ein registrierter oEmbedded- Anbieter im WordPress-core ist.

Sie könnten z. B. den pre_oembed_result Filter verwenden, bevor die HTTP-Anforderung gestellt wird, um ihn zu löschen und ihn Ihren Anforderungen entsprechend zu überschreiben.

Hier ein Beispiel für Facebook-Posts:

 add_filter( 'pre_oembed_result', function ( $result, $url, $args ) { // override the HTML result for Facebook posts, that will be saved into postmeta table if( preg_match( '#https?://www\.facebook\.com/.*/posts/.*#i', $url ) ) $result = sprintf( '
%s
', esc_url( $url ), esc_url( $url ) ); return $result; }, 10, 3 );

Wenn Sie eine Facebook-Post-URL in den Post-Content-Editor einfügen, wird auch das modifizierte oEmbed-Ergebnis mit unserem Snippet angezeigt.

Die oEmbed-Ergebnisse werden standardmäßig in der DAY_IN_SECONDS für DAY_IN_SECONDS (24 Stunden) zwischengespeichert.

Wir können mit dem oembed_ttl Filter spielen, wie hier , aber in der Zwischenzeit können wir auch die zwischengespeicherte Ausgabe mit dem embed_oembed_html Filter filtern.

Hier ist ein Beispiel:

 add_filter( 'embed_oembed_html', function( $cache, $url, $attr, $post_id ) { // override the cached HTML result for Facebook posts if( preg_match( '#https?://www\.facebook\.com/.*/posts/.*#i', $url ) ) $cache = sprintf( '
%s
', esc_url( $url ), esc_url( $url ) ); return $cache; }, 10, 4 );

Sie müssen die php preg_replace function verwenden, um Ihre URL in ein Snippet umzuwandeln.

Bitte bedenke:

  • Die URLs müssen mit http://facebook.com/ oder https://facebook.com/ gestartet werden, damit die function funktioniert.
  • Wenn Sie eines Tages versuchen, einen Link hinzuzufügen, ohne sich in ein Snippet zu verwandeln, werden Sie Probleme bekommen, da diese function jeden Facebook Link in ein Snippet verwandelt.
  • Ich habe den Code nicht selbst getestet, Sie können diesen Link überprüfen und die Regeln ändern, um die besten Ergebnisse zu erzielen.

Fügen Sie der Datei function.php den folgenden Code hinzu:

  add_filter( 'the_content', 'the_facebook_filter', 20 ); function the_facebook_filter( $content ) { $fb_links = wp_extract_urls( $content ); $string = preg_replace('#http://facebook.com/(.*?)#i', '
', $fb_links[0]); $string = preg_replace('#https://facebook.com/(.*?)#i', '
', $fb_links[0]); return $string; }