it-swarm-eu.dev

Získat příspěvek podle názvu stránky nebo slug

Vím, že je to velmi avantgardní, ale nesou se mnou. Četl jsem, že člověk je schopen dotazovat stránku podle názvu stránky nebo poštou. Snažím se to udělat, protože potřebuji informace ze stránky s podobným názvem/slugem a nebudu mít možnost získat ID stránky (pokud neexistuje způsob, jak převést název na ID).

Zkoušel jsem několik variant bez úspěchu. Vypadá to jako nejpřiměřenější způsob, jak to zvládnout, ale prostě to nefunguje.

<?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>

Smyčka

<?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. ?>

Také jsem se snažil 'name' => 'CM-145', nejsem si jistý, zda je to správný nebo rozumný způsob, jak tuto akci provést. Nakonec prostě musím vytáhnout stránku palce a úryvek, takže pokud máte lepší nápad, neváhejte a dejte mi vědět.

Díky předem.

4
Zach Shallbetter

Ahoj @Zach Shallbetter:

Pokud rozumím vaší otázce, pak se snažíte vyřešit váš problém pomocí tématických funkcí, když opravdu potřebujete použít více WordPress 'API. Následující kód může být zkopírován do souboru test.php a spustit pomocí http://yoursite.com/test.php, abyste viděli, jak to funguje (za předpokladu, že nahradíte http://yoursite.com doménou své vlastní webové stránky, samozřejmě!) Pak si přečtěte komentáře, kde naleznete umístěte kód pro použití na svých stránkách:

<?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>

Také jsem trochu znepokojen, že můžete zažívat trochu "kladivo a nehty" syndrom; tj. když máte problém a máte pouze kladivo, ošetřujete problém jako nehet, když možná potřebujete najít šroubovák?

Konkrétně se obávám, že používáte stránku pro něco, co by mělo být jednoduše volbou, nebo možná alespoň vlastním typem příspěvku? Můžete podrobněji vysvětlit svůj případ použití a proč jste se rozhodli použít stránku?

3
MikeSchinkel

změňte get_template_part( 'loop' ); na get_template_part( 'loop','page' ); nebo ručně vložte smyčku přímo do této šablony a zjistěte, zda je to problém. Váš kód je jinak správný.

* edit - hádám, že váš smyčkový soubor má nějaké podmíněné kontroly, aby se určilo, jak zobrazit příspěvky v různých kontextech, které nejsou splněny dotazem vaší stránky, takže se nic nezobrazuje.

1
Milo