Wie man Post-ID an Bild-Links in WordPress Tinymce Editor anhängen

Ich versuche, die Post-ID im rel-Attribut der Bild-Links auszugeben, die von WordPress generiert werden, wenn Sie die Schaltfläche Medien hinzufügen verwenden. Ich habe einen Weg gefunden, die Post-ID abzurufen und auch die Ausgabe der Bild-Links über den Filter image_send_to_editor .

Um den Bild-Link-Code anzupassen, habe ich folgenden Beitrag in diesem WordPress-Forum gefunden :

 function filter_image_send_to_editor($html, $id, $caption, $title, $align, $url, $size, $alt) { $html = sprintf('%2$s', esc_attr(esc_url($url)), esc_attr($title)); return $html; } add_filter('image_send_to_editor', 'filter_image_send_to_editor', 10, 8); 

Der Code zum Abrufen der Post-ID lautet wie folgt:

 global $post; $id = $post->ID; 

Jetzt, wenn ich die 2 kombiniere, wird die Post-ID nicht angezeigt. Ich möchte die Beitrags-ID mit dem vorangestellten lightbox- ausgeben. Aber wenn ich mir den generierten Code anschaue, sieht das rel-Attribut so aus:

 rel="lightbox-" 

Es scheint, dass ich die Post-ID innerhalb der Filterfunktion nicht abrufen kann. Der errorshafte Code, den ich innerhalb der obigen Filterfunktion verwende, ist:

  global $post; $id = $post->ID; $html = sprintf('%2$s', esc_attr(esc_url($url)), esc_attr($title), esc_attr($id)); return $html; 

Sie fragen vielleicht, warum ich die Post-ID an die Bildlinks anhängen möchte. Nun, ich baue eine Seite, die mehrere Beiträge (und ihre Bilder) auf einer langen Seite anzeigt. Ich habe ein Lightbox-Plugin angehängt, möchte aber per Post einen separaten Leuchtkasten. Das Lightbox-Plugin, das ich verwende, gruppiert die Bilder nach rel-Attribut. Ich versuche, das rel-Attribut so aussehen zu lassen: rel="lightbox-972" wobei 972 eine Post-ID ist.

Als Workaround benutze ich Javascript, um die Lightboxen pro Post zu arbeiten, aber es wäre schön zu lernen, wie man das ohne das js-fiddling erreicht und warum das nicht wie erwartet funktioniert …

Solutions Collecting From Web of "Wie man Post-ID an Bild-Links in WordPress Tinymce Editor anhängen"

Sie haben Recht, dass der global $post nicht innerhalb der function gesetzt ist. Weil es Ajax Callback ist und es keine Schleife gibt. Der Ajax-Aufruf sendet jedoch eine Post-ID, die Sie in der function als $_POST['post_id'] können.

Bitte beachten Sie: In Callback-functionsargumenten ist $url nicht die Image-URL. Es ist eine Anker-Tag-URL. Wenn also jemand keine, eine Anhangseite oder eine benutzerdefinierte URL auswählt, während er ein Bild in den Inhalt einfügt, wird das Bild beschädigt. Bitte wp_get_attachment_image_src() Sie daran, wp_get_attachment_image_src() anstelle von URL zu verwenden.

Dann wird die vollständige function wie folgt aussehen

 function filter_image_send_to_editor($html, $id, $caption, $title, $align, $url, $size, $alt) { $post_id = isset($_POST['post_id']) ? $_POST['post_id'] : 0; $image_url = wp_get_attachment_image_src($id, $size); return sprintf('%2$s', $image_url[0], $alt, esc_attr($post_id)); } add_filter('image_send_to_editor', 'filter_image_send_to_editor', 10, 8);