我一直在为我发现的一个函数拼凑一些代码,该函数于2009年左右首次发布,我对PHP的缺乏经验让我不知所措。
该功能旨在统计播客类别中的剧集,因此:
function Get_Post_Number($postID){
$temp_query = $wp_query;
$postNumberQuery = new WP_Query(array (
\'orderby\' => \'date\',
\'order\' => \'ASC\',
\'post_type\' => \'any\',
\'category_name\' =>\'podcast-episodes\',
\'posts_per_page\' => \'-1\'
));
$counter = 1;
$postCount = 0;
if($postNumberQuery->have_posts()) :
while ($postNumberQuery->have_posts()) : $postNumberQuery->the_post();
if ($postID == get_the_ID()){
$postCount = $counter;
} else {
$counter++;
}
endwhile; endif;
wp_reset_query();
$wp_query = $temp_query;
return $postCount;
}
据我所知,这很好用。我创建了一个短代码来返回查询中的值,这导致摘录没有显示出来。然后我创建了一个过滤器来执行同样的操作,结果也是一样的。无摘录。在这里,我只发布短代码:
/**
* Create shortcode to display Episode count.
*/
function episodeNo() {
$epID = get_the_ID();
$epNumber = Get_Post_Number($epID);
echo \'Episode \' . $epNumber;
}
add_shortcode(\'episode\',\'episodeNo\');
以下是我的疑问:
$args = array(
\'posts_per_page\' => 3,
\'category_name\' => \'podcast-episodes\'
);
$query = new WP_Query( $args );
// The Loop
if ( $query->have_posts()){
echo \'<ul class="entries">\';
while ( $query->have_posts() ) {
$query->the_post();
echo \'<div class="entries-post">\';
echo \'<a href="\' . get_permalink() . \'">\';
echo \'<h1 class="entries-title">\' . get_the_title() . \'</h1>\';
echo \'</a>\';
do_shortcode(\'[episode]\');
echo \'<div class="entries-excerpt">\';
the_excerpt();
echo \'</div>\';
echo \'</div>\';
}
}
echo \'</ul>\';
}
/* Restore original Post Data */
wp_reset_postdata();
现在,如果短代码在\\u节选之前运行,它会正确显示集号,但不会显示节选。
Title
第11集
Title
第10集
Title
第9集
如果在节选之后运行,则会正确显示节选和集号:
Title
这周我喝咖啡时哭了
第11集
Title
本周我将着手一个新的设计项目
第10集
Title
这周我主要玩电子游戏
第9集
不幸的是,设计是这样的,插曲必须在节选之前显示出来。
如果我使用与短代码执行相同职责的过滤器,则会发生完全相同的情况。
有没有人知道如果在这个短代码之后调用,\\u摘录,为什么无法显示?我确信这是计算或返回剧集编号的方式,但我知道的太少,无法自己更正。相信我,我已经试过了。最后