XHTMLforum

XHTMLforum (http://xhtmlforum.de/index.php)
-   (X)HTML (http://xhtmlforum.de/forumdisplay.php?f=72)
-   -   Umwandlung in String (http://xhtmlforum.de/showthread.php?t=72947)

Mallorcagirl 02.08.2016 16:53

Umwandlung in String
 
Hi,

folgende Funktion habe ich für mein WordPress Theme entwickelt...funktioniert auch...Würde Sie aber gerne in einen String umschreiben, damit "the_content" in dem Part des Themes nicht generell, sondern nur bei dem einen Aufruf betroffen ist. Weiß jemand, wie ?

Code:

<?php function remove_video ($content) {
$content = preg_replace("/<iframe[^>]+\>/i", "", $content);         
return $content;
}
add_filter('the_content', 'remove_video');

                        the_content();?>


protonenbeschleuniger 02.08.2016 17:44

Zitat:

Zitat von Mallorcagirl (Beitrag 549592)
Hi,

folgende Funktion habe ich für mein WordPress Theme entwickelt...funktioniert auch...Würde Sie aber gerne in einen String umschreiben, damit "the_content" in dem Part des Themes nicht generell, sondern nur bei dem einen Aufruf betroffen ist. Weiß jemand, wie ?

Code:

<?php function remove_video ($content) {
$content = preg_replace("/<iframe[^>]+\>/i", "", $content);         
return $content;
}
add_filter('the_content', 'remove_video');

                        the_content();?>


Was ist "der eine Aufruf"?

So was gehört eigentlich in die functions.php
https://codex.wordpress.org/Functions_File_Explained

Mallorcagirl 02.08.2016 17:45

Das ist mir schon klar. Da kann ich es aber nicht brauchen, weil es dann generell wirkt. ich will es nur in der ienen single.php so haben...Wie schreibe ich das als String um ?

protonenbeschleuniger 02.08.2016 17:55

Zitat:

Zitat von Mallorcagirl (Beitrag 549595)
Das ist mir schon klar. Da kann ich es aber nicht brauchen, weil es dann generell wirkt. ich will es nur in der ienen single.php so haben...Wie schreibe ich das als String um ?

Das dir das klar ist, können wir nicht Wissen.

Aber welchen Vorteil erhoffst du dir davon, dass du diesen Hook in ein Templatedatei packst?
Ein Filter wird ja nur dann aufgerufen, wenn das Ereignis eintritt.

Deine Frage an sich ergibt aber keinen Sinn. Eine PHP Funktion ist eine PHP Funktion und eine String ist ein String, du kannst nicht das eine als das andere benutzen.

Mallorcagirl 02.08.2016 18:02

Das Problem ist, dass ich aus "the_content" das Video (iframe) herausfiltern muss...da weiss ich gar nicht wie man das schreibt im Moment und zugleich den Rest den Inhalts (Text), was ich mit der Funktion gemacht habe. Dies brauche ich, damit ich beide Inhalte voneinander trennen und eigenständige im Template positionieren kann (leider liegen die beide in der gleichen Datenbanktabelle).

Wenn ich aber die Funktion so benutze, wird sie, wenn ich das zweite mal ausserhlab der Funktion auf die Abfrage "the_content" aufrufe wieder wirksam. Das heißt, ich brauche sie so, dass sie filtert, aber eben nur einmal (eine Abfrage) und dass danach die Abfrage "the_content" wieder ganz normal funktiniert. Deswegen habe ich gefragt ob man das auch als STring umsetzen kann zumal ich auch noch eine Abfrage bräuchte wie ich nur den iframe abbilde.

protonenbeschleuniger 02.08.2016 18:17

Zitat:

Zitat von Mallorcagirl (Beitrag 549597)
Das Problem ist, dass ich aus "the_content" das Video (iframe) herausfiltern muss...da weiss ich gar nicht wie man das schreibt im Moment

genau so wie du es machst. Dazu erzeugst du einen Hook/Filter der dann zur Laufzeit das filtert was du möchtest.

Zitat:

Zitat von Mallorcagirl (Beitrag 549597)
und zugleich den Rest den Inhalts (Text), was ich mit der Funktion gemacht habe. Dies brauche ich, damit ich beide Inhalte voneinander trennen und eigenständige im Template positionieren kann (leider liegen die beide in der gleichen Datenbanktabelle).

Für genau solche Zwecke gibt es solche Filter.

Zitat:

Zitat von Mallorcagirl (Beitrag 549597)
Wenn ich aber die Funktion so benutze, wird sie, wenn ich das zweite mal ausserhlab der Funktion auf die Abfrage "the_content" aufrufe wieder wirksam. Das heißt, ich brauche sie so, dass sie filtert, aber eben nur einmal (eine Abfrage) und dass danach die Abfrage "the_content" wieder ganz normal funktiniert.

Das verstehe ich nicht. Ein Filter wirkt in dem Moment wo der Hook - in deinem Fall "the_content" - aktiv wird. Das ist aber bei diesem Filter nur einmal pro Aufruf.

the_content() ist keine Abfrage, sondern gibt den Inhalt des aktuellen Datensatz (oder in der WP Sprache des Post) aus und funktioniert immer "normal".

Mallorcagirl 02.08.2016 18:21

Ja aber mit the_content ruft man normal den inhalt des ganzen Postings auf.
Wenn ich jetzt mit "the_content" mit meinem Filter einmal diese funktion aufrufe und danach noch einmal (ausserhalb der Funktion" the_content aufrufe, dann ruft er mir das ja wieder so auf, wie im Filter...ich will aber dass er es beim ersten aufruf filtert und beim zweiten nicht mehr

protonenbeschleuniger 02.08.2016 18:49

Zitat:

Zitat von Mallorcagirl (Beitrag 549599)
Ja aber mit the_content ruft man normal den inhalt des ganzen Postings auf.
Wenn ich jetzt mit "the_content" mit meinem Filter einmal diese funktion aufrufe und danach noch einmal (ausserhalb der Funktion" the_content aufrufe, dann ruft er mir das ja wieder so auf, wie im Filter...ich will aber dass er es beim ersten aufruf filtert und beim zweiten nicht mehr

Nein. the_content() gibt den aktuellen Datensatz aus, der Filter bewirkt das während der Ausgabe der Inhalt bearbeitet werden kann, bevor er ausgegeben wird. Der Filter ändert nicht die Daten des aktuellen Post, sondern wirkt nur auf die Ausgabe.

Das was du willst ist so nicht möglich. aber auch nicht üblich. Zum positionieren kannst du CSS verwenden.

Mallorcagirl 02.08.2016 22:13

OK hab bereits ne andere Lösung gefunden. Dennoch bitte noch eine Frage: Wie kann ich denn aus "the_content" genau das, was ich vorher weggefilter haben (den iframe) herausfiltern, also dass nur noch der iframe angezeit wird und sonst nichts mehr. Das müsste doch machbar sein oder, weil wenn ich ihn rauslassen und damit ja angreifen kann, muss ich ihn doch auch extrahieren können oder ?

Vielleicht irgendwie so in die Richtung ? (Geht aber leider noch nicht)

Zitat:

<?php $content = get_the_content(); ?>
<?php preg_match('/<iframe[^>]+\>/i', $content, $matches);
$video_url = $matches[1];
?>

<?php echo $video_url?>
Wenn ich auf diese Weise das IMG des Postings (anstatt von iframe) ziehe, geht es..

Das sieht dann so aus:

Zitat:

<?php $content = get_the_content(); ?>
<?php preg_match('/<img.*src="(.*)".*>/U', $content, $matches);
$video_url = $matches[1];
?>

<?php echo $video_url?>
Was mache ich denn noch falsch ? Eigentlich müsste es gehen, weil der iframe sich ja umgekehrt in dem anderen Code oben auch angreifen und filtern lässt. Hat jemand ne Idee ?

protonenbeschleuniger 03.08.2016 07:10

Warum positionierst du nicht mit CSS? Das wäre doch einfacher.

um an den Teilstring des Ausdrucks zu kommen, musst du diese mit einer Klammer gruppieren.


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:07 Uhr.

Powered by vBulletin® Version 3.8.11 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.

© Dirk H. 2003 - 2023