dynamicinternet Webdesign

Das Blog

Themen, Tutorials sowie Tipps & Tricks über Webdesign, (X)HTML und CSS, Programmierung, WordPress und was uns sonst noch bewegt.

RSS abonnieren

Lösungen für die Sticky Post

Nach meiner Post gestern und ein paar Mails in der wp-testers Mailingliste versuche ich nun darzustellen, was eine Sticky Post so anrichtet.


Sticky Post in WordPress 2.7

Falscher Count der Posts

Möchte ich zum Beispiel 6 Posts auf einer Seite darstellen, verwende ich query_posts(‘showposts=6′); Sind aber eine oder mehrere Posts “sticky”, werden die hinzugezählt. Also müssen wir die Anzahl der sticky Posts ermitteln.

get_option(‘sticky_post’)(danke Frank) liefert ein Array mit den als sticky gekennzeichneten Posts zurück, welches wir counten.


$sticky = count(get_option('sticky_posts'));
query_posts('showposts='. ( 6 - $sticky ));

Sticky Posts weiterhin in der chronologischen Auflistung der Posts

Das Nächste, was es zu beachten gilt, sind die CSS-Klassen für die Posts. post_class() gibt der Post die entsprechenen Klassen, die im CSS verwendet werden können. Im Falle einer Sticky Post unter anderem die Klasse “sticky”. Wer nun denkt, ich gebe der Klasse sticky einen roten Hintergrund mit einem schwarzen Rahmen und schon habe ich einen schönen Teaser, der wird, wenn er weiterblättert, eine Entäuschung erleben, da diese Sticky Posts auch in der normalen Beitrags-Chronologie erscheinen und dort ebenfalls die Klasse “sticky” besitzen (also roter Hintergund mit schwarzem Rahmen). Nicht wirklich cool.

Kill the Sticky

Will man im Theme keine Sticky Posts haben oder zulassen, einfach im Template notieren:


update_option('sticky_posts', array());

und schon sind sie dahin…

9 Kommentare
  1. gr4y sagt:

    Kurz gesagt ist die Funktion mit den Sticky-Post relativ sinnbefreit und umständlich fürs erste?

  2. Micha sagt:

    Für mein Verständnis wurde eine Funktionalität eingeführt, die nicht richtig durchdacht wurde. Der “normale” Nutzer wird damit kaum in Berührung kommen. Nur wenn du Themes schreibst, oder spezielle Anpassungen, dann mußt du dir den Kopf zerbrechen, wie du damit umgehst.

  3. gr4y sagt:

    Mehr wollte ich ja auch nicht ausdrücken. Es wurde wieder mal eine Funktion in WordPress eingebaut die nicht richtig durchdacht wurde.

    Also die bisherige Theme-API ist sowieso mehr als grausig für mich. Viel mehr werd ich mir da den Kopf nicht zerbrechen als das letzte mal!

  4. Frank sagt:

    Aber schön, dass du nun die Lösung teilst.
    Ich hatte gerade Gespräche mit Anwender, denen gefällt es gerade so, also + die Anzahl der Stickys + die laufende Postausgabe. Vermutlich werden sich an solchen Themen immer die Geister scheiden. Aber man hätte ja einen Template Tag hinzufügen können, dann wäre es als Theme-Autor einfacher.

  5. Frank sagt:

    gerade aufgefallen, ich würde den Wert nicht direkt setzen. Eventuell soll ja die Einstellung via Backend genutzt werden.
    statt 6 wäre es dann get_option('posts_per_page')

  6. Micha sagt:

    die Anzahl der Stickys + die laufende Postausgabe

    sehe ich nicht so. In einer normalen index.php ist das auch Wurscht, denke ich. gebe ich aber explizit 6 Posts an dh., ich denke mir ja was dabei, dann hat es das System auch gefälligst so zu machen. Dafür ist ja showposts wohl auch da.
    Fakt ist, die haben es halbherzig intergriert, zu Risiken und Nebenwirkungen fragen sie Herrn Bültge oder mich ;)

  7. Toei Rei sagt:

    … oder fressen sie den codex und erschlagen sie die…

    Ich denke, die neuen Themes werden aufgrund der Vereinfachungen der WP-Devs nicht unbedingt einfacher werden, da man jetzt wohl viele Sachen ‘zu Fuss’ coden muss…

  8. Monika sagt:

    für Designer wird da gar nichts einfacher – denn: der neue template tag, post_class hat auch die class für die sticky drin,
    die steht weit hinten -logischerweise

    mag ich jetzt in Archivansichten keine sticky Formatierung muss ich dort ein anderes div drumherum geben, sonst gehts net … Quellcodeaufblähungsaktion nenn ich das

    oder mag man bei den Kommentaren was sprachlich ändern , muss man die Funktion umschreiben – (soifz)

    lg

  9. Micha sagt:

    Du kannst post_class selbst beeinflußen und auch eigene Klassen einbinden.
    post_class('myclass, mysecondclass','')

    zu den Kommentaren: da werden wir nicht drumrum kommen.

Einen Kommentar schreiben