Kann functions.php im Template-Datei-Editor nicht speichern
-
Hallo Leute,
wenn ich dieses Code-Snippet in die functions.php meines Child-Themes einfüge, kann ich ihn im Template-Datei-Editor nicht mehr abspeichern. Die Fehlermeldung ist:
„Etwas ging schief. Deine Änderung wurde vermutlich nicht gespeichert. Bitte erneut versuchen. Es besteht die Möglichkeit, dass du den Fehler manuell beheben und die Datei per FTP hochladen musst.“/**
* Text über Readmore als manuellen Textauszug festlegen. Problem: Embedded interne Link-Excerpts werden teils ab TOC ausgegeben
* Entfernt den Table of Contents (TOC) und verwendet nur den Text vor dem more-Tag.
*/
function custom_embed_excerpt_filter($content) {
// Nur in Embed-Vorschau anwenden
if (is_embed()) {
global $post;
// Manuellen Excerpt prüfen und verwenden, falls vorhanden
$manual_excerpt = get_post_field('post_excerpt', $post->ID);
if (!empty($manual_excerpt)) {
return '<p>' . esc_html($manual_excerpt) . '</p>';
}
// Rohen, ungefilterten Inhalt aus der Datenbank abrufen
$raw_content = get_post_field('post_content', $post->ID);
// Table of Contents (TOC) entfernen
$raw_content = preg_replace('/\[toc(.*?)\]/', '', $raw_content); // TOC-Shortcode entfernen
$raw_content = preg_replace('/<div[^>]*id=["\']?toc["\']?[^>]*>.*?<\/div>/is', '', $raw_content); // TOC in einem Div entfernen
// Text bis zum <!--more-->-Tag oder der ersten Überschrift extrahieren
$excerpt = '';
// 1. Prüfen, ob ein <!--more-->-Tag vorhanden ist
$read_more_position = strpos($raw_content, '<!--more-->');
if ($read_more_position !== false) {
$excerpt = substr($raw_content, 0, $read_more_position); // Text vor dem more-Tag
} else {
// 2. Falls kein more-Tag vorhanden, Text bis zur ersten Überschrift verwenden
preg_match('/<(h[1-6])[^>]*>(.*?)<\/\1>/is', $raw_content, $matches);
if (!empty($matches)) {
$first_heading_position = strpos($raw_content, $matches[0]); // Position der ersten Überschrift
$excerpt = substr($raw_content, 0, $first_heading_position); // Text vor der ersten Überschrift
} else {
// 3. Falls weder more-Tag noch Überschrift vorhanden, gesamten Inhalt verwenden
$excerpt = $raw_content;
}
}
// HTML-Tags entfernen und den Text auf 25 Wörter begrenzen
return '<p>' . wp_trim_words(wp_strip_all_tags($excerpt), 25, '...') . '</p>';
}
// In allen anderen Fällen den ursprünglichen Inhalt zurückgeben
return $content;
}
add_filter('the_content', 'custom_embed_excerpt_filter');
?>Speichere ich über FTP: kein Problem.
Speichere ich über den Editor OHNE das Snippet: kein Problem.Ist etwas am Code unter WP „verboten“? Ich habe ihn online durch verschiedene Tools testen lassen: keine Fehler. Er funktioniert auch so, wie erwartet.
Danke im Voraus
Gruß
Michael
Ansicht von 4 Antworten – 1 bis 4 (von insgesamt 4)
Ansicht von 4 Antworten – 1 bis 4 (von insgesamt 4)
- Du musst angemeldet sein, um auf dieses Thema zu antworten.