php seite über php include und Benutzdefiniertes Feld aufrufen

  • php seite über php include und Benutzdefiniertes Feld einbinden

    Hallo
    ich will eine, z.b. seite-thema-1.php, über ein benutzerdefiniertes Feld einbinden. Dazu habe ich folgendes unter "before_headline" eingebaut:
    --------------------------------
    <div class="auswahl" align="left">
    <strong><font color="#1F1F1F" face="Courier New, Courier, mono" size="3">
    <?php $post_id = get_the_ID();
    $thema_auswahl = get_post_meta($post_id, 'auswahl', true);
    echo [$thema_auswahl]; ?>
    </font></strong></div>
    -----------------------------------------------
    Das funktioniert sehr gut, solange ich in das benutzerdefinierte feld mit dem Namen "auswahl" nur html oder text schreibe.
    Wenn ich folgendes reinschreibe geht nichts mehr:
    -----------------------------------------------
    <?php include 'dachzeile-nr-2.php'; ?>
    -------------------------------------------------------
    Auch der Aufruf über ein php-include Plugin geht nicht.
    --------------------------------------------------------
    Allerdings muß ich erwähnen, die .php Seite, die eingebaut werden soll, sind die Posts einer Kategorie in Form eines Dropdown Menü,
    so wie das folgende:
    ----------------------------------------------
    <form>
    <select name="menu" onChange="javascript:parent.location = this.form.menu.options[this.form.menu.selectedIndex].value;">
    <option selected>quicklinks all around the world</option>
    <option value="http://www.domain.de/?p=201">balabla</option>
    <option value="http://www.domain.de/?p=270">balabla balabla</option>
    <option value="http://www.domain.de/?p=194">balabla balabla balabla</option>
    </select></form>
    ----------------------------------------------
    Das Dropdown funktioniert super wenn ich es direkt ins benutzerdefinierte Feld schreibe.

    Aber das problem ist, daß ich immer wenn innerhalb einer Kategorie ein neuer Artikel dazukommt, alle anderen Seiten per Hand aktualisieren muß. Ab 20 wirds langweilig !
    -----------------------------------------------------
    Ok es gibt das Dropdown Plugin, das alle Posts pro Kategorie aufruft. Geht super nur daß es mit wordpress 3.0 nur noch 5 Artikel im Dropdown anzeigt. Auch wenn man auf "0 unlimited" konfiguriert oder wenn man 20 einträgt.
    ----------------------------------------
    Hat jemand ne Idee ?

    Ich muß dazu sagen ich habe keine Ahnung von php und benutzerdefinierten feldern. Aber mit dem oben, das ich irgendwo aus dem Forum habe, hats immer gut geklappt. Bis jetzt.
    Danke im Vorraus

    Einmal editiert, zuletzt von Rolandooo (29. Juli 2010 um 19:29)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • 1. gibt es einen tieferen grund, dass die php tags mit ins benutzerfeld rein sollen?
    2. wo ist die datei 'dachzeile-nr-2.php' gespeichert?


    wenn nicht 1., und wenn 2. im theme-verzeichnis gespeichert:

    PHP
    $thema_auswahl = get_post_meta($post->ID, 'auswahl', true); 
    if($thema_auswahl) include( TEMPLATEPATH . '/'.$thema_auswahl );



    und ins benutzerfeld nur:

    Code
    dachzeile-nr-2.php



    ( die if-abfrage ist damit kein quatsch entsteht falls das feld leer ist;
    $post_id ging nicht fuer benutzerfeld; daher $post->ID )

  • Ich würde die Ausgabe einfach anpassen und es bei txt im benutzerdefinierten feld belassen, also nur datei.php

    da du den code eh innerhalb des loops verwendest, brauchst du die id nicht nochmal auszulesen. ich habe nach ne abfrage gemacht, damit kein include durchgeführt wird, sollte das benutzerdef. feld leer sein

    PHP
    <?php
    $auswahl = get_post_custom_values('auswahl');
    if (!empty($auswahl)) {
    include $auswahl[0]; 
    } ?>

    Edit: in meinem Fall wird die datei aus dem themeverzeichnis gelesen.

  • dachzeile unter /

    Vielen Dank für die schnelle Antwort. Die Dachzeile, also die Datei mit dem Text des Dropdown steht unter / kann die aber auch unter theme ablegen. Keine Ahnung vielleicht war das der Fehler. werde mal eine ins Theme schnell legen.

    Ich probiere das von Euch mal aus und melde mich nach den test hier wieder.

  • ausprobiert geht nicht

    Hallo
    interessanterweise gehts nicht. Ich habe die oben angegebenen codes eingebaut. Es erscheint nichts. Ich habe das Gefühl, daß nur text und html akzeptiert wird. Bilder kann man übrigens aufrufen. Einen iframe habe ich eingebunden, so wie nomalerweise in html. Der hat das Dropdown erstellt aber der ganze blog ab iframe nach unten war weg. geht auch nicht und er iframe nimmt zu viel platz ein und verzerrt das design.

    Nach einigem Nachdenken stelle ich fest, daß das ein für jedermann interessantes Thema sein muß. Weil in dem Moment in dem man eine irgendwo anders abgelegte datei per benutzerdefiniertes Feld einbindet, muß man nur noch diese ändern und nicht alle Artikel einzeln. Das wäre sehr nützlich.

    Wie sucht man jetzt den Fehler oder ist sowas überhaupt nicht möglich.

    Dieser include ist irgendwie problematisch.

  • Nun, der Code funktioniert (innerhalb des loops) und ruft auch die im theme-verzeichnis abgelegte datei auf. habe es selbst auf einer testumgebung getestet.

    vielleicht stimmt ja was mit der datei nicht, die du includen willst. lässt sie sich denn separat aufrufen? Ansonsten am besten mal den eingebundenen code im zusammenhang posten.

    Nachfolgender Code funktioniert bei mir ausserhalb des Loops.

    PHP
    <?php
    global $wp_query;
     $post_obj = $wp_query->get_queried_object();
     $post_id = $post_obj->ID;
     $auswahl = get_post_custom_values('auswahl',$post_id);
    if (!empty($auswahl)) include $auswahl[0];
    ?>
  • datei ist normal über browser aufrufbar

    Hallo ich habe den neuen code kurz eingebaut. Dann kommt diese Meldung:
    Warning: include(dachzeile-auswahl-all-around.php) [function.include]: failed to open stream: No such file or directory in ............pfad.................................../functions.php(680) : eval()'d code on line 6

    Warning: include() [function.include]: Failed opening 'dachzeile-auswahl-all-around.php' for inclusion (include_path='.:/usr/lib/php5') in ..........................pfad............................./functions.php(680) : eval()'d code on line 6

    Die functions.php ist eine Datei eines Plugins, das für thesis theme arbeitet und die Quelltexte so wie für thesis an die entsprechenden Stellen einbaut. Vielleicht liegts daran. Dein Code oben wird an der Stelle oberhalb von der Überschrift des Artikels eingesetzt. Den ersten code den ich eingesetzt habe, funktioniert und bringt alles html aus dem benutzerdefinierten feld auf die Seite.

    Frage wo würdest Du Deinen Code einfügen in Wordpress, wenn Du die Ausgabe des benutzerdefinierten Feldes über der Artikelüberschrift haben willst.

    Wo legts Du die aufzurufende Datei ab. ich habe die unter / und im theme verzeichnis also direkt im verzeichnis mit dem namen des theme. gestern wars in "allen" in frage kommenden verzeichnissen, um sicherzustellen daß es gefunden wird.

    Ich werde mal sehen, ob ich herausfinden kann, wie man den code ohne plugin integriert.

  • Also ich weiss gar nicht so genau, was du eigentlich willst. Da sollte man lösungsorientiert drangehen und jetzt nicht schauen, welches Plugin welche Probleme an irgendeiner Stelle macht. Wichtig ist, welche Funktion du auf der Seite letztendlich haben willst. Es gibt halt immer mehrere Wege.

    Bezugnehmend auf deine Ergänzungen im Eingangspost habe ich gerade mal was zusammengeschraubt und online gestellt:

    1) Die Abbildung der letzten x Artikel der Kategorie oberhalb der Überschrift eines Beitrags als Dropdown.
    2) Letzter Eintrag im Dropdown ein Link zur entsprechenden Kategorie.
    3) Sollte ein Beitrag mehreren Kategorien zugeordnet sein, erscheinen mehrere Dropdowns
    4) Spezielle Kategorien können auch ausgeklammert werden.

    Für so etwas benötigt man weder Plugins, noch Ergänzungen in functions.php, Einträge in benutzerdefinierten Feldern oder ähnliches. Der Code wird einfach ausserhalb des Loops in das Template single.php eingefügt.

    Zu sehen ist das ganze derzeit mal testweise hier:
    Artikel mit einer Kategorie
    Artikel mit zwei Kategorien

  • ja genau so

    Ja Vielen Dank, Du hast recht, genau wie auf Deiner Beispielseite soll es sein. Schaut sehr gut aus und Deine Brasilprojekte auch. Das zweite Dropdown braucht nicht sein. In meinem Fall ist nur eines besser. Sieht wirklich gut aus. Ich habe lange gesucht (auch Thesis) und nichts gefunden. Auch im Internet findet man sowas so gut wie in keinem Blog. Aber ist doch eine Super Sache. Eine wirkliche Verbesserung. Wie eine bequeme Schnellauswahl innerhalb einer Kategorie. Macht den Blog benutzbarer. Schade, daß ich php nicht kann.

    Hervorragend Vielen Dank. Ich werde das sofort einbauen. Ich werde bei meinen nächsten Beiträgen ein paar textbasierte und themenverwandte Verweise auf Deine Projekte setzen.
    Viel Erfolg bei Deinen Projekten und schöne Tage in Brasilien

    baue das jetzt mal ein

  • Vielen Dank funktioniert astrein

    Ich muß die feldbreite auf ca 400 px einschränken. Sonst läufts bei mir rechts raus. Und ich muß nur ein Dropdown einbauen, weil ich manchmal Posts in 4 Kategorien habe. Seotechnisch ein Problem aber es ist halt so.

    Ich bin begeistert

  • ein Laie bastelt

    Ist sehr schön geworden. Ich habe das Feld mit style="width&#58:400px" im select begrenzt. Ist das so ok ?

    wenn ich als Laie das foreach herausnehme erhalte ich zwar nur noch ein Dropdown aber das <?php echo $category->name; ?>
    gibt den Namen der Kategorie nicht mehr aus.

    es steht dann nur noch im Feld:

    Die letzten 10 News über >>

  • get_the_category gibt ein array zurück, also muss die Kategorie aus der Reihe extra festgelegt werden, wenn nicht alle Kategorien (foreach) nacheinander verwendet werden sollen. Dies erfolgt dann per

    $category[0] <- nur das 1. Element der Reihe
    $category[1] <- nur das 2. Element der Reihe

    Achtung: WP gibt die "Kategorienliste" alphabetisch und nicht nach ID aus.

    Das Form-Element kannst du auch ganz einfach über CSS gestalten, habe ja eine id in den Code gesetzt.

    Nachfolgend der Code zur Abbildung nur eines Dropdowns, auf der bekannten Domain zu sehen.

    Schön, das dir meine Seiten gefallen.
    Grüsse aus Brasilien ...

  • funktioniert einwandfrei

    Vielen Dank ich habe beide Versionen im Einsatz.

    Nochmal ein Lob. Das ist ungeheuerlich nützlich. US websites übrigens nutzen wesentlich häufiger diese "Quicklinks" innerhalb der Posts in einer Kategorie. Gleichzeitig wird dem User ja auch ein indirekter Vorschlag einer verwandten Kategorie gemacht, wenn mehrere Dropdowns erscheinen, weil der Artikel in div. Kategorien passt.

    Die Dropdowns passen sich, weil platzsparend, gut ins Design ein und werden von den meisten Usern erkannt. Weil eben uralt und bekannt.

    Deine themen und textbasierten .... wirst Du beim nächsten .... check finden.

    Viel Erfolg bei Deinen Projekten

    Roland

    Einmal editiert, zuletzt von Rolandooo (3. August 2010 um 01:40)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!