Välja vart widgets ska synas i WordPress

Jag fick ett uppdrag att bygga en hemsida åt ett företag med en WordPressinstallation. Det togs fram några olika mallar och några egna widgets, men ett problem uppstod. Kunden ville själva välja vilka sidor deras widgets skulle synas på. Jag började Googla och efter några fraser hittade jag pluginet Widget Logic.

Widget Logic gör så att du kan sätta upp villkor med WordPress egna Conditional Tags för dina widgets. Om du till exempel bara vill visa en widget på inläggsidor med kategorin ”Qwerty”, skriv följande villkor för den:

is_single() && in_category('Qwerty')

Möjligheterna blev i princip oändliga när jag upptäckte att man även kunde använda sig av get_meta() från pluginet More Fields.

More Fields är ett trevligt plugin som gör så att du kan skapa egna fält för dina posttyper. Standard posttyperna i WordPress är Inlägg och Sidor. Det går även att skapa egna posttyper med More Fields, men det är en annan historia.

Med More Fields skapade jag en ”box” med en checkbox för varje widget. Sedan valde jag att ”boxen” skulle finnas under posttypen Sidor. Detta innebär att om jag skapar eller redigerar en vanlig sida kommer det att finnas checkboxar för mina olika widgets. Därefter behövde jag även ställa in varje widget med villkoret get_meta(), innehållande tillhörande checkboxens slug:

get_meta('widget1_checkbox')

Ladda ner Widget Logic och More Fields enkelt från WordPress.org
http://wordpress.org/extend/plugins/widget-logic/
http://wordpress.org/extend/plugins/more-fields/

Läs mer om Widget Logic och More Fields
http://freakytrigger.co.uk/wordpress-setup/
http://labs.dagensskiva.com/plugins/more-fields/

  • Pingback: Tweets that mention Välja vart widgets ska synas i Wordpress « Johan Hermansson -- Topsy.com()

  • (Sent, jag vet. Men Post-typer kommer inte finnas kvar i More Fields, det flyttas till More Types i och med WP3.0.)

    • More Types låter spännande. Jag ska helt klart kika närmare på det när jag börjat pilla mer med WP3.0. Tackar så mycket för upplysningen.

  • Melinda

    Hur gör man för att länka undersidor? Tex jag har en sida som heter Emil och den sidan har en undersida som heter Utställning.
    Jag skriver is_page(‘emil’) för Emils sida, men hur gör jag för utställningssidan?
    Har testat is_page(‘emil/utstallning’), men det fungerade inte.

    • Enligt Conditional Tags används enbart ID eller post_name (slug) i is_page(). I ditt fall ska det nog vara is_page(‘utstallning’).

      Om du vill säkerställa att det är sidbarnet till Emil går det med Widget Logic att skicka ett return istället för ett villkor.

      global $post; $parent = get_page($post->post_parent); return ( is_page(‘utstallning’) && $parent->post_name == ‘emil’);

      Men nu när jag skriver det känns det lite overkill. Enklast kan vara att kolla vilket ID som Utställning har och säga is_page(123)

      Det blev ett långt svar. Hoppas det går bra ändå.

      Lycka till!