我正在尝试运行一个只在任何帖子的第一页上执行的函数。因此,如果因为使用了<!--nextpage-->
标记,并且您位于该文章的第2页或更高页,则该函数不应运行。
Even the Wordpress documentation 对如何执行此操作感到困惑:
当显示的页面为“时”;已分页;。这是指一个归档文件或主页被拆分为多个页面,并将在第二页和后续页面上返回True。这并不是指内容已使用Next Page QuickTag划分为多个页面的帖子或页面。要检查帖子或页面是否已使用nextpage QuickTag划分为多个页面,请参阅A_Paged_Page部分
更多详细信息:
我目前在函数中使用以下代码。php将帖子中我的特色图片从第一段上方和标题下方的默认位置移动到第一段下方。
问题是,它还在同一篇文章的第2、3、4页等的同一位置显示了特色图像(当我使用<!--nextpage-->
). 特色图片只应显示在任何文章的第一页。
add_filter( \'the_content\', \'insert_feat_image\', 20 );
function insert_feat_image( $content ) {
if (!is_single(array(xxxxx))) {
global $post;
if (has_post_thumbnail($post->ID)) {
$caption = \'xxxx\';
$img = \'xxx\';
$content = xxx;
}
return $content;
} else {
$contentnormal = preg_replace(\'#(<p>.*?</p>)#\',\'$1\'.$img . $caption, $content, 1);}
return $contentnormal;
}
我删除了一些与此问题无关的潜在识别代码(xxx)。
最合适的回答,由SO网友:Sally CJ 整理而成
问题是,它还在同一篇文章的第2、3、4页等的同一个插页上显示了特色图像(当我使用<!--nextpage-->
). 特色图片只能显示在任何文章的首页。
在这种情况下,这可能适用于您:
function insert_feat_image( $content ) {
global $page, $multipage;
if ( $multipage && $page <= 1 ) {
// it\'s the 1st page, so run your code here.
} // else, it\'s not paginated or not the 1st page
return $content;
}
关于上述全局变量的说明:
$multipage
是一个布尔标志,指示是否使用<!--nextpage-->
标签(或Page Break block 在古腾堡),只要帖子包含<!--nextpage-->
标记,并且已设置全局post数据,例如。the_post()
或setup_postdata()
已调用。(在循环内时为真)页码存储在$page
, 但也可以使用get_query_var( \'page\' )
. (是的page
而不是paged
)
如果您只想知道它是否是第一页,无论页面/帖子如何分页(以及only if 它已分页,或者在存档的情况下,这意味着有多个结果页),您可以尝试此操作,它应该适用于任何页面(单帖子/页面/CPT、类别存档、搜索结果页面等):
function insert_feat_image( $content ) {
global $page, $multipage, $paged, $wp_query;
$page_num = max( 1, $page, $paged );
/* Or you can use:
$page_num = max( 1, get_query_var( \'page\' ), get_query_var( \'paged\' ) );
*/
if ( ( $multipage || $wp_query->max_num_pages > 1 ) && $page_num <= 1 ) {
// it\'s the 1st page, so run your code here.
} // else, it\'s not paginated or not the 1st page
return $content;
}
SO网友:joshmoto
如果你想确定single.php
发布页面位于paged()
页码那么这将需要更多的逻辑。
但是,如果您只是尝试执行一个函数,如果一篇文章位于存档第一页上。。。那么这样做应该很直接。。。
<?=
// args
$args = [
\'post_type\' => \'post\',
\'posts_per_page\' => 10,
\'paged\' => get_query_var(\'paged\') ? absint(get_query_var(\'paged\')) : 1
];
// setup query
$query = new WP_Query($args);
这将通过上述查询检测您所在的页面。。。
<?php
// if above query page number is 1
if($query[\'paged\'] === 1 ) {
// do stuff
}
希望有意义。如果没有,请告诉我。