fitrování podstránek

Zvolené téma obsahuje celkem 7 odpovědí. Do diskuze (2 účastníci) se naposledy zapojil uživatel  martin a poslední změna je stará 12 let, 2 měsíce.

Aktuálně je na stránce zobrazeno 8 příspěvků - 1. až 8. (z celkem 8)
  • Autor
    Příspěvky
  • #1400

    martin
    Participant

    Ahoj, prosím o radu, jak nejsnadněji přidat k podstránkám nějaké kriterium, abych je mohl později podle něj filtrovat?

    Příklad: stránky 1,2,3,4,5 jsou potomkem strany A, při zobrazení strany A by se mi však nabídly jen stránky 1,3,4

    Momentálně umím zobrazit všechny, ale chybí mi něco, podle čeho bych je filtroval.

    Díky!

    #10458

    admin
    Keymaster
    Web

    Co máte na mysli filtrováním? Pokud chcete nějak označovat konkrétní stránky, tak můžete použít např. uživatelská pole, případně si na jejich základě vytvořit vlastní metabox s příslušným zaškrtávátkem (např. “Zobrazovat podřazené”). Ale nejsem si jist zda tomu zcela rozumím – pokud podřazené stránky nějak souvisí s nadřazenou, tak by měly být vidět všechny? A filtrování zobrazování podstránek by se mělo vztahovat obecně na všechny stránky?

    Obecně umí něco podobného např. plugin WP Hide Post, ale nevím, jestli se přesně hodí k zamýšlenému účelu (záleží také jakým způsobem zobrazujete podřazené stránky u konkrétní nadřazené stránky).

    #10459

    martin
    Participant

    našel jsem následující http://codex.wordpress.org/Function_Reference/wp_list_pages ,ale než se tím prokoušu, tak bych poprosil jestli není někde návod na ten metabox se zaškrtávátkem ;) plíís

    potřeboval bych zobrazovat jen některé z podřazených

    #10460

    martin
    Participant

    zkusil jsem filtrovat tímto

    wp_list_pages("title_li=&include=".$post->post_parent ."&meta_key=zem&meta_value=mng&echo=0");

    ale zobrazuje to stále všechny podstránky, i ty které nemaji zem=mng

    #10461

    admin
    Keymaster
    Web

    Zkoušel jsem to a podle mě parametry meta_key a meta_value v pořádku fungují.

    Problém bych viděl v parametru include – proč je tam použito $post->post_parent? Pro výpis podřazených stránek u nějaké konkrétní stránky je třeba použít spíše parametr child_of.

    Také nulová hodnota parametru echo znamená, že se stránky nebudou na webu zobrazovat, ale uloží se do příslušné proměnné pro další práci.

    Uvedený plugin se pro popisované účely nehodí?

    #10462

    martin
    Participant

    nejsem moc přívržencem pluginů, takže se s tím raději pachtím sám a namáhám závity a taky tohle forum ;)

    to neuložení je právě pro další práci… filtruju tím v šabloně submenu které se skládá z linků důležitých podstránek rodičovské stránky a podstránek zobrazené stránky

    nevíte, prosím, o nějakém workaroundu pro wp_list_pages() a taxonomy? Zatím jsem jsem nikde nic nevygooglil

    #10463

    admin
    Keymaster
    Web

    Někdy se ale pluginy hodí, i když vlastním zkoumáním se zase něco naučíte :-)

    Přikládám kód pro vlastí sekci v administraci (metabox) s možností zaškrtávání.

    <?php
    // Vytvoříme vlastní sekci (metabox) v administraci...
    add_action( 'add_meta_boxes', 'separatista_vytvorit_meta_box' );
    function separatista_vytvorit_meta_box()
    {
    add_meta_box( 'separatista-meta-box-zobrazovani-stranky', 'Zobrazování stránky', 'separatista_meta_box_zobrazovani_stranky', 'page', 'side', 'high' );
    }

    // Konkrétní zobrazení sekce...
    function separatista_meta_box_zobrazovani_stranky()
    {

    global $post;
    $values = get_post_custom( $post->ID );
    $check = isset( $values['_separatista_zobrazeni_stranky'] ) ? esc_attr( $values['_separatista_zobrazeni_stranky'][0] ) : '';
    // Nonce pro ukládání hodnoty uživatelského pole...
    wp_nonce_field( 'separatista_meta_box_nonce', 'separatista_nonce' );
    ?>

    <p>
    <input type="checkbox" id="_separatista_zobrazeni_stranky" name="_separatista_zobrazeni_stranky" <?php checked( $check, 'ano' ); ?> />
    <label for="_separatista_zobrazeni_stranky">Zaškrtnutím zobrazíte stránku na webu</label>
    </p>

    <?php
    }

    // Uložíme hodnotu checkboxu...
    add_action( 'save_post', 'separatista_meta_box_ulozeni_hodnot' );
    function separatista_meta_box_ulozeni_hodnot( $post_id )
    {

    if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;

    if( !isset( $_POST['separatista_nonce'] ) || !wp_verify_nonce( $_POST['separatista_nonce'], 'separatista_meta_box_nonce' ) ) return;

    if( !current_user_can( 'edit_page' ) ) return;

    $chk = isset( $_POST['_separatista_zobrazeni_stranky'] ) && $_POST['_separatista_zobrazeni_stranky'] ? 'ano' : 'ne';
    update_post_meta( $post_id, '_separatista_zobrazeni_stranky', $chk );
    }
    ?>

    Vytvořte si z něj plugin, případně ho použijte ve functions.php, snad to bude fungovat. Při úpravě stránky se nahoře objeví nové zaškrtávátko. Pokud bude zaškrtnuto, tak se do uživatelského pole _separatista_zobrazeni_stranky uloží hodnota “ano”. Potom s tímto polem můžete dále pracovat při zobrazování stránek na webu, viz zmiňovaná funkce wp_list_pages() a parametry meta_key a meta_value.

    #10464

    martin
    Participant

    Slibuju, že už s wp_list_pages otravuju naposled… ;)

    potřebuji vybrat všechny potomky nadřazené stránky kromě těch, které nejsou resortem

    a taky vyhodim ze seznamu aktuální stránku

    wp_list_pages(“title_li=&exclude=”.$post->ID.”&child_of=”.$post->post_parent .”&meta_key=druh_stranky&meta_value!=resort&echo=”); bohužel nefunguje

    zkusil jsem <>, not in ale nemělo to vliv

Aktuálně je na stránce zobrazeno 8 příspěvků - 1. až 8. (z celkem 8)

Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.

WordPress – novinky, návody a zajímavosti