web-dev-qa-db-ja.com

ページ名またはスラッグで投稿する

私はこれが非常に前衛的であることを知っていますが、私と一緒にいてください。私は、人がページ/投稿名またはスラッグによってページを問い合わせることができると読んだ。私はこれをやろうとしているのですが、私は似たtitle/slugを持つページからの情報が必要で、ページIDを取得することはできないでしょう(titleをIDに変換する方法がない限り)。

私は成功せずに複数のバリエーションを試しました。これはこれを処理する最も合理的な方法のように思えますが、それは単に機能していません。

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

ループ

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

私は'name' => 'CM-145'も試しましたが、これがこのアクションを実行するための正しいまたは合理的な方法であるかどうかわかりません。究極的には、私は単にページの親指を引いて抜粋する必要があるので、あなたがより良いアイデアを持っているならば、私に知らせることを躊躇しないでください。

前もって感謝します。

4

こんにちは@ Zach Shallbetter:

あなたの質問を理解していれば、WordPressのAPIをもっと使用する必要があるときにテーマ関数を使用して問題を解決しようとしています。次のコードをtest.phpファイルにコピーし、http://yoursite.com/test.phpを使用して実行すると、その動作を確認できますhttp://yoursite.comを独自のものに置き換えた場合もちろん、ウェブサイトのドメイン!)次に、コメントを読んで、サイトで使用するコードを配置する場所を確認します。

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

また、「ハンマーアンドネイル」症候群を少し経験しているかもしれません。つまり、問題があり、ハンマーしか持っていない場合、ドライバーを見つけることが必要な場合は、問題を釘のように扱いますか?

具体的には、単にオプションにするか、少なくともカスタム投稿タイプにする必要があるページにあなたが使用しているのではないかと心配です。ユースケースをさらに詳しく説明してください。また、ページを使用することにした理由を教えてください。

3
MikeSchinkel

get_template_part( 'loop' );get_template_part( 'loop','page' );に変更するか、または手動でそのテンプレートに直接ループを挿入して、それが問題であるかどうかを確認してください。そうでなければあなたのコードは正しいです。

* edit-あなたのループファイルはあなたのページクエリでは満たされていない異なるコンテキストで投稿を表示する方法を決定するためにいくつかの条件付きチェックをしていると思いますので何も表示されません。

1
Milo