Lista de páginas personalizada
-
Estou precisando da ajuda de vocês para simplificar um código. No template que estou usando tem um código no seu functions.php que pega a lista de páginas e formata de forma diferente do que o wp_list_pages nativo. Modifiquei para a formatação que eu queria e ficou assim:
# Displays a list of pages function dp_list_pages() { global $wpdb; $querystr = "SELECT $wpdb->posts.ID, $wpdb->posts.post_title, $wpdb->posts.menu_order FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'page' AND $wpdb->posts.ID != '2' AND $wpdb->posts.ID != '15' ORDER BY $wpdb->posts.menu_order ASC"; $pageposts = $wpdb->get_results($querystr, OBJECT); if ($pageposts) { foreach ($pageposts as $post) { ?><?php if (is_page($post->ID)) echo ' class="here"'; ?><a href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title; ?></a> | <?php } } }
O problema que estou tendo é que quero excluir algumas páginas dessa lista, e como podem ver no código acima eu tive que colocar um $wpdb->posts.ID != ‘2’ AND $wpdb->posts.ID != ’15’, ou seja, tive que colocar uma por uma. Teria como fazer isso de forma melhor? E melhor ainda, colocando como argumento para quando chamar a função eu passo apenas o ID das páginas?
Obrigado, não sei quase nada de PHP mas vou modificando e testando e chego nos resultados, mas coisas acima do simples complica para mim.
-
Olá tekobr,
Tenta assim:
# Displays a list of pages function dp_list_pages($args="") { global $wpdb; $ids_exclude = $args; $querystr = "SELECT $wpdb->posts.ID, $wpdb->posts.post_title, $wpdb->posts.menu_order FROM $wpdb->posts WHERE $wpdb->posts.post_status = 'publish' AND $wpdb->posts.post_type = 'page' AND $wpdb->posts.ID NOT IN ($ids_exclude) ORDER BY $wpdb->posts.menu_order ASC"; $pageposts = $wpdb->get_results($querystr, OBJECT); if ($pageposts) { foreach ($pageposts as $post) { ?><?php if (is_page($post->ID)) echo ' class="here"'; ?><a href="<?php echo get_permalink($post->ID); ?>"><?php echo $post->post_title; ?></a> | <?php } } }
Sendo a chamada da função assim:
dp_list_pages("1,2,3");
Qualquer coisa, pode falar.
Perfeito, funcionou direitinho. Muito obrigado!
- O tópico ‘Lista de páginas personalizada’ está fechado para novas respostas.