我想显示过去一周发布的某个类别的帖子。我使用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网站变成了空白页。
一个(可悲的)又一个狡猾的问题:一旦这个函数不能让我的页面变为空白,那么调用它的最佳方式是什么?我想把这个放在主要位置吗if have_the_posts()
在中查询single.php
(例如)还是应该在该查询之外调用它?
我知道有一些插件支持这种类型的功能,但我将进行一系列格式化和进一步定制。
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 );
最合适的回答,由SO网友:rudtek 整理而成
您得到白色屏幕的原因是您从未定义过“$字符串”。您只连接了它。
将来,通过在wp\\U配置中将wp\\U debug设置为true,您可以在创建函数时发现错误。php文件。
下面是应该工作的代码:
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;
}