過去1週間に投稿された1つのカテゴリからの投稿を表示します。私はquery_posts()
を使ってこれを行いましたが、それが悪い考えであることについて読んだことがあります。
そのため、私は自分で変更してfunctions.php
に配置できる関数を作成してから、直接または子テーマのsingle.php
単一ブログ投稿テンプレートのアクションを通じて呼び出すことを試みました。
私の機能はこれまでに機能したことがなく、私が何をしているのか理解するのに役立つものを望んでいました。
function new_function() {
//Arguments
$args = array(
'post_type' => array( 'post' ),
'category_name' => 'classifieds',
'post_status' => array( 'publish' ),
'date_query' => array( 'after' => '1 week ago' ),
);
//Query
$new_query = new WP_Query( $args );
if ( $new_query->have_posts() ) {
$string .= '<ul>';
while ( $new_query->have_posts() ) {
$new_query->the_post();
$string .= '<li>';
$string .= '<li><a href="' . get_the_permalink() .'" rel="bookmark">' . get_the_title() .'</a></li>';
} else {
}
}
$string .= '</ul>'
return $string;
wp_reset_postdata();
}
上記が私のfunctions.php
に入ったら、私のWordpressサイトは空白のページに変わります。
1つの(悲しい)そして卑劣な追加の質問:この機能が私のページを空白にしない場合、それを呼び出すための最良の方法は何ですか?これをsingle.php
のメインのif have_the_posts()
クエリに含めたいのですか、それともそのクエリの外側で呼び出しますか?
私はこのタイプの機能を可能にするプラグインがあることを知っていますが、私はたくさんのフォーマットとさらなるカスタマイズをするつもりです。
EDIT
以下の答えで提供された助けのおかげで、私のコードは今うまくいき、このように見えます:
function classified_stream() {
//Arguments: posts, in classifieds category, that are published, and from the past week
$new_args = array(
'post_type' => array( 'post' ),
'post_status' => 'publish',
'category_name' => 'classified',
'date_query' => array( 'after' => '1 week ago' ),
);
//Query
$new_query = new WP_Query( $new_args );
//Trouble shooting with print_r - I realized I called the wrong category in an earlier version of function.
//print_r($new_query);
if ( $new_query->have_posts() ) :
while ( $new_query->have_posts() ) : $new_query->the_post();
echo '<p><a href="' . get_the_permalink() .'" rel="bookmark">' . get_the_title() .'</a></p>';
endwhile;
endif;
wp_reset_postdata();
}
add_action( 'storefront_page_after', 'classified_stream', 20 );
白い画面が表示されるのは、 "$ string"が定義されていないからです。あなたはそれを連結しただけです。
将来、wp_config.phpファイルでwp_debugをtrueにすることで関数を作成するときにエラーを見つけることができます。
これはうまくいくはずのコードです。
function new_function() {
//Arguments: posts, in classifieds category, that are published, and from the past week
$args = array(
'post_type' => array( 'post' ),
'category_name' => 'classifieds',
'post_status' => array( 'publish' ),
'date_query' => array( 'after' => '1 week ago' ),
);
//Query
$new_query = new WP_Query( $args );
if ( $new_query->have_posts() ) {
$string = '<ul>';
while ( $new_query->have_posts() ) {
$new_query->the_post();
$string .= '<li>';
$string .= '<li><a href="' . get_the_permalink() .'" rel="bookmark">' . get_the_title() .'</a></li>';
} else {
}
}
wp_reset_postdata();
$string .= '</ul>'
return $string;
}
私はあなたの関数にもより実用的な名前を付けようとしますが、あなたがその関数を呼び出す準備ができたらあなたは(phpファイルで)それをすることができます:
echo new_function();
更新コード:
function new_function() {
//Arguments: posts, in classifieds category, that are published, and from the past week
$args = array(
'post_type' => array( 'post' ),
'category_name' => 'classifieds',
'post_status' => array( 'publish' ),
'date_query' => array( 'after' => '1 week ago' ),
);
//Query
$new_query = new WP_Query( $args );
$string = '';
if ( $new_query->have_posts() ) {
$string = '<ul>';
while ( $new_query->have_posts() ) :
$new_query->the_post();
$string .= '<li>';
$string .= '<li><a href="' . get_the_permalink() .'" rel="bookmark">' . get_the_title() .'</a></li>';
endwhile;
wp_reset_postdata();
}
$string .= '</ul>'
return $string;
}