12

Rejtett oldalak a wordpress blogodban

Posted március 26th, 2010 in Wordpress, Wordpress Core and tagged theme, Wordpress, wp_list_pages by Attila

Mostanában gyakran felmerülő probléma – készítek egy oldalt, de olyat, amit csak akkor látogathatnak meg, ha én irányítok oda látogatókat. Azaz ne jelenjen meg az oldalra mutató hivatkozás a wordpressre annyira jellemző “oldalak” felsorolásban.

Példa – a kajarikbela.hu oldal jobb felső sarkában felsorolt oldal-linkek (lásd a képen nyillal megjelölve).

A rendszerben elkészült még egy oldal, amit nem szeretnénk a főoldalon (és úgy általában) mutogatni senkinek, viszont elérhető kell legyen bárki számára. Mi a teendő?

Fontos!

Lazaságból minden biztonsági kockázatra fittyet hányva “on-the-fly”, az on-line rendszerben végzem el a core php módosításokat. Fontos tudnod, ha így teszel, és akár egy vesszőt is elnézel, akkor a rendszered összeomolhat! Csak akkor tedd ezt, ha teljesen biztos vagy a dogodlban – én az vagyok, mégis parázok egy kicsit :) .

Ha tiszta kezdő vagy, érdemes helyi, local szerveren tesztelned a működést – kisebb segítség itt: http://hun2.org/blog/teljes/ne_rontsd_el/, illetve itt: http://hun2.org/blog/teljes/ne_rontsd_el2/

Mielőtt belepiszkálnánk a rendszerbe, szükségünk van az oldal azonosítójára – ezt megtalálod a szerkesztés nézetben (amikor az oldaladat éppen szerkeszted) – mondjuk a böngésződ címsorában (a post változó értéke, &post=”xxxx”):

Ha kész a bejegyzés, akár közzé is tehetjük – néhány percig lesz csak látható a menüsorban, hamar ki lehet pakolni onnan.

Milyen linken érhető el mégis az oldal? Még mindig a szerkesztés résznél találod az oldal címe alatt a közvetlen linket:

Előkészületek kipipálva, Action!

A sablonod szerkesztéséhez kattints a Megjelenés / Szerkesztő menüpontra:

Ezt követően – jobb oldalt a sablonok listájából válaszd ki a fejlécet:

Illetve ebben az esetben a Fejlécre van szükségünk, mert itt van az oldalak listája. Hogy pontosan hol? Keress egy ilyen szövegrészt a fejrész forrásában: <?php wp_list_pages('title_li='); ?>

Ez a rövid kis forráskód nem csinál egyebet, csak kilistázza az összes oldal linkjét, méghozzá HTML felsorolásként. Van egy paramétere, amivel kizárhatunk a listából egyes oldalakat (hát éppen erre lenne szükségünk).

Ez a paraméter pedig az exclude.

Mivel már van egy paraméter hozzácsatolva a template TAG-hez (a title_li), ezért ahhoz hozzá kell fűzzük az újabb paramétert egy & kapcsolóval, valahogy így:<?php wp_list_pages('title_li=&exclude=2403'); ?> – ahol az exclude értéke az oldalunk azonosítója lesz, amit a legelején kilestünk a böngésző címsorából.

Mentsd a szerkesztés módosításait, kész vagy. Az oldalad elérhető a közvetlen link segítségével, mégsem lesz kilistázva a főoldalon a többi linkkel.

Ha akad hasonló problémád, a hozzászólásoknál jelezd!

12 Responses so far.

  1. Kajárik Béla szerint:

    Szia Attila!
    Nagyon könnyen érthetően mutattad itt be ezt a remek megoldást, amiért  köszönetet 
    szeretnék mondani.

  2. Kajárik Béla szerint:

    Attila!

    Egy újabb oldal hozzáadása HOGYAN történik?
    Milyen  “összeadás” jelet kell használni ebben az esetben?
    & vagy valami mást?
    Pl.
    :<?php wp_list_pages('title_li=&exclude=2403+2468'); ?>
    vagy

    :<?php wp_list_pages('title_li=&exclude=2403&exclude=2468'); ?>

  3. Attila szerint:

    Egyszerűen vesszővel elválasztva fel kell sorolni az oldalakat (exclude=2403,2468)

  4. Kajárik Béla szerint:

    Köszi szépen Attila a precíz választ!
     

  5. Gerbovics Péter szerint:

    Kedves Attila!
    .
    Az én sablonomnál ezt nem tudom megcsinálni. Nekem az alábbi kódnál jól látható, hogy csak a depth=1 * értéket lehet állítani, én hogyan tudom megcsinálni, hogy a főoldal még is rejtett legyen? Az exclude= értékem nekem így néz ki. **
    .
    Előre is köszönöm a válaszod!
    .
    *
    .
    <div id=”top”>

    <ul class=”nav1″>
    <li <?php if ( is_home() ) { ?> class=”current_page_item” <?php } ?>><a href=”<?php echo get_option(‘home’); ?>/”><span>Kezdőlap</span></a></li>
    <?php
    $pages = wp_list_pages(‘sort_column=menu_order&title_li=&echo=0&depth=1′);
    $pages = preg_replace(‘%<a ([^>]+)>%U’,'<a $1><span>’, $pages);
    $pages = str_replace(‘</a>’,'</span></a>’, $pages);
    echo $pages;
    ?>
    </ul>
    <!–/nav1–>
    .
    **
    .
    </div>
    <!–/header –>

    <div id=”topmenu”>
    <ul id=”nav”>
    <?php include(TEMPLATEPATH . ‘/includes/version.php’); ?>
    <?php wp_list_categories(‘title_li=&exclude=’ . $ex_aside) ?>

  6. Attila szerint:

    Szia Péter!

    Ki kell egészíteni a kódot valahogy így:
    $pages = wp_list_pages(’sort_column=menu_order&title_li=&echo=0&depth=1&exclude=…′);

    Ahol a ‘…’ helyére vesszővel elválasztva jöhetnek a kizárni kívánt oldalak azonosítói.

  7. Gerbovics Péter szerint:

    Nagyon szépen köszönöm Attila, sikerült!! :)

  8. Gerbovics Péter szerint:

    Lenne még egy kérdésem Attila, remélem nem számít offnak. Ugyanezt szeretném megtenni, csak nem az oldalakkal, hanem az új bejegyzésekkel. Tehát bárki számára látható legyen, ha a kategóriában, archívumban vagy a keresőben keresi, de a főoldalon ne jelenjen meg a friss bejegyzéseknél. Erre a sablonomon belül nincs külön menüpont, ezért kérdezem, hogy lehet-e ilyet csinálni?

  9. Attila szerint:

    A friss bejegyzések megjelenítésére általában egy plugin szolgál – vagy a wp_get_archives template tag. Bárhogy is kapd meg a legfrissebb bejegyzéseket, azokat a közzététel dátuma szerint válogatja ki a rendszer. Egy módja van, hogy a legfrissebb bejegyzések között ne legyen ott egy bejegyzés: a közzététel előtt a közzététel dátumát átállítod egy régire :) .

  10. Gerbovics Péter szerint:

    És a közzététel dátumát hogyan tudom átállítani? Vagy ha van erre plugin, akkor annak meg tudod mondani a nevét? Köszi! :)

  11. Attila szerint:

    Ja – a közzététel dátuma – hát a post / oldal írásakor jobb oldalt adható mega pontos dátum.

Leave a Reply