Úvodní stránka › Fórum podpory WordPressu › Problémy s WordPressem › fitrování podstránek
Štítky: Export, Meta Box, Uživatelská pole, wp_list_pages
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á 13 let.
-
AutorPříspěvky
-
7. února 2012 (17:57) #1400
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!
7. února 2012 (18:23) #10458Co 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).
7. února 2012 (20:28) #10459naš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
7. února 2012 (20:43) #10460zkusil 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
8. února 2012 (13:35) #10461Zkoušel jsem to a podle mě parametry
meta_key
ameta_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 parametrchild_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í?
8. února 2012 (16:24) #10462nejsem 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
8. února 2012 (18:13) #10463Ně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.9. února 2012 (14:27) #10464Slibuju, ž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
-
AutorPříspěvky
Pokud chcete odpovědět na toto téma, musíte se nejdříve přihlásit.