Obter postar por nome de página ou slug

4

Eu sei que isso é muito avant-garde, mas tenha paciência comigo. Eu li que um é capaz de consultar uma página pela página / nome do post ou slug. Estou tentando fazer isso porque preciso de informações de uma página com um título / slug semelhante e não tenho a capacidade de obter o ID da página (a menos que haja uma maneira de converter um título em um ID).

Eu tentei várias variações sem sucesso. Essa parece ser a maneira mais razoável de lidar com isso, mas simplesmente não está funcionando.

<?php 
    $args = array(
    'pagename' => 'CM-145',
    'post_type' => 'page',
    'posts_per_page' => 1,
    'numberposts' => 1
); ?>
<div>
    <?php
        query_posts( $args );
        get_template_part( 'loop' );
        wp_reset_query();
    ?>
</div>

O Loop

<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

                <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                    <?php if ( is_front_page() ) { ?>
                        <h2 class="entry-title"><?php the_title(); ?></h2>
                    <?php } else { ?>
                        <h1 class="entry-title"><?php the_title(); ?></h1>
                    <?php } ?>

                    <div class="entry-content">
                        <?php the_content(); ?>
                        <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
                        <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="edit-link">', '</span>' ); ?>
                    </div><!-- .entry-content -->
                </div><!-- #post-## -->

                <?php comments_template( '', true ); ?>

<?php endwhile; // end of the loop. ?>

Eu também tentei 'name' => 'CM-145' , não tenho certeza se essa é a maneira correta ou razoável de executar essa ação. Em última análise, eu simplesmente preciso puxar o polegar e o trecho da página, por isso, se você tiver uma idéia melhor, não hesite em me avisar.

Obrigado antecipadamente.

    
por Zach Shallbetter 22.04.2011 / 16:58

2 respostas

3

Oi @Zach Shallbetter:

Se eu entendi sua pergunta, você está tentando resolver seu problema usando funções de temas quando realmente precisa usar mais da API do WordPress. O código a seguir pode ser copiado para um arquivo test.php e executado usando http://yoursite.com/test.php para você ver como funciona (supondo que você substitua http://yoursite.com pelo domínio do seu próprio site, é claro!) leia os comentários para ver onde colocar o código para uso em seu site:

<?php 

// The function should go into your theme's functions.php file
function get_excerpt( $post_id ) {
  $post = get_post( $post_id );
  $excerpt = $post->post_excerpt;
  return ( post_password_required($post) ? false : 
     apply_filters( 'get_the_excerpt', $excerpt ) );
}

include('../wp-load.php');

// This code goes where you need to get and display the excerpt and thumbnail
$post = get_page_by_path('CM-145');
$excerpt = get_excerpt($post->ID);
$thumbnail = get_the_post_thumbnail($post->ID);
?>
<div style="width:300px">
<span style="float:right;"><?php echo $thumbnail; ?></span>
<?php echo $excerpt ?>
</div>

Além disso, estou um pouco preocupado que você esteja experimentando um pouco da síndrome "martelo e prego" ; Ou seja, quando você tem um problema e você só tem um martelo, você trata o problema como um prego, quando talvez o que você precisa é encontrar uma chave de fenda?

Especificamente, estou preocupado que você esteja usando uma página para algo que deve ser simplesmente uma opção ou, pelo menos, um tipo de postagem personalizada? Você pode explicar seu caso de uso mais profundamente, e por que você escolheu usar uma Página?

    
por MikeSchinkel 22.04.2011 / 18:43
1

altere get_template_part( 'loop' ); para get_template_part( 'loop','page' ); ou insira manualmente um loop diretamente nesse modelo e veja se esse é o problema. seu código está correto.

* edit- Eu estou supondo que o seu arquivo de loop tem algumas verificações condicionais para determinar como exibir posts em diferentes contextos que não são atendidos pela sua consulta de página, então nada é exibido.

    
por Milo 22.04.2011 / 17:37

Tags