printf stellt variable nach vorne

Edit: Lösung gefunden, siehe #9

PHP:
<?php printf('Von %s', the_author_posts_link()); ?>
Was mach ich falsch? Code aus meinem Wordpress Theme.
 
Zuletzt bearbeitet:
PHP:
<?php printf('Von %s', the_author_posts_link()); ?>
Was mach ich falsch? Code aus meinem Wordpress Theme.

Was passiert in der Funktion "the_author_posts_link()"? Ich würde behaupten, du machst dort einfach ein "echo $name". Das würde erklären warum es zu diesem Verhalten kommt. Ersetze "echo" durch "return", dann sollte es gehen.

HTH

Micha
 
Danke mime, das ist die Lösung.
Allerdings kann ich the_author_posts_link() nicht ändern. Diese Funktion ist von Wordpress vorgegeben. Hab das gleiche Problem an gefühlten 100 anderen Stellen. Eigentlich braucht man printf auch gar nicht, ausser man will ein Theme internationalisieren (Mehrsprachig machen). Und genaus das mach ich gerade. Irgendwie wurde in den Tutorials die Problematik gar nicht angesprochen. Ich geh nochmals nachlesen.
 
Bin zwar kein PHP-Ninja ;) aber tuts da dann nicht auch ein



echo "Von ";
the_author_posts_link();
echo "\n";

Oder hab ich da was falsch verstanden?


 
die Lösung von meinem Vorposter ist wohl das einzige, was wirklich funktioniert...

Über die Tatsache, dass Wordpress in seinen Funktionen alles gleich raus echo't, hab ich mich bei uns @work auch schon paar mal aufgeregt... echt kein tolles Arbeiten mit Wordpress... keine Ahnung, was sich die Entwickler dabei gedacht haben...

Wenn ich mir den Code von Wordpress anschaue, frage ich mich sowieso, wie dieses Stück Software so populär werden konnte... an der Code-Ästhetik kann es wohl nicht gelegen haben...
 
PHP:
ob_start();
the_author_posts_link()
$the_author_posts_link = ob_get_contents();
ob_end_clean();

printf('Von %s', $the_author_posts_link);

(ungetest)
 
@Oi!Alex: Wenn du nach
PHP:
the_author_posts_link()
noch ein Semikolon setzt, ist das natürlich auch noch ne funktionierende Variante...

wobei es halt schon ein wenig nervig ist, ständig den Output-Buffer bemühen zu müssen... daher ist (meiner Meinung nach) eine Ausgabe mit echo schon angenehmer und schöner zu lesen...

Aber ich hatte auch schon Fälle gehabt, wo ich eigentlich den Inhalt von dem, was eine Wordpress-Funktion ausgibt, auswerten musste, um dementsprechend irgendwas anzuzeigen - da kam ich auch nicht um die ob_*-Funktionen drum herum...

Wer vielleicht nichts anderes gewohnt ist und jahrelang an Wordpress rumbastelt, für den ist das selbstverständlich, wie das dort alles geht... aber für mich als OOP-liebenden Menschen, der gerne Funktionalität und Ausgabe strikt trennt, ist Wordpress echt... nennen wir es "unschön designed"

Normalerweise bin ich ja bei vielen kleineren Problemen der Meinung "bevor ich ein passendes Plugin gefunden habe, habe ich es auch selbst neu gecodet" - bei Wordpress dagegen bin ich immer froh, wenn's was fertiges gibt... :D
 
EDIT:
Ich hatte einfach dien normalen Funktionen übernommen aus einem Theme. Es gibt noch jeweils eine passende Funktion, die den Parameter einfach zurückliefert, anstatt ihn auszugeben. Problem erledigt.
/EDIT


Ich brauche printf leider, da ich den Code nur einmal schreiben will für alle Sprachen. Ich erweiter mal das obige Beispiel, damit klar wird warum ich das benötige.

zb.

PHP:
printf(__('Author: %1$s %2$s', 'textdomain'), get_author_first(), get_author_last());

Wenn ich jetzt eine Übersetzung für Chinesisch mache, dann erstelle ich ein Language File in dem steht dann etwa:

Code:
original: Author: %1$s %2$s
translation: 作家: %2$s %1$s

Man sieht, ich bin auf so extras wie argument swapping angewiesen. Die Funktion __() lädt dynamisch die korrekten Inhalte für die gerade gewähte Sprache. Ausserdem will auf jeden Fall Language Files Nutzen, ich kann doch nciht für jede Übersetzung durch den kompletten Quelltext durchlesen.

Sorry für die Fragen, ich komme aus der Java Fraktion und das sind meine ersten Schritte wieder in php, seit über 5 Jahren. Wahrscheinlich gibts da was elegantes, ich habs nur noch nicht gefunden. Ich schau mir nochmal auf der entwicklerseite zu wordpress um, kann ja nicht sein, dass ich der erste Mensch mit dem Problem bin.
 
Zuletzt bearbeitet:
Bei Drupal gibt keine Fuktion einfach was aus; das mus man selber machen. Wordpress ist eh irgendwie ein wenig merkwürdig vom Code her :rolleyes:
 
Zurück
Oben