我正在尝试为分页的WordPress帖子生成自定义链接文本。
使用<!--nextpage--><!--pagetitle: My Title-->
,我会识别分页符并为下一页设置标题。
标题用作生成链接中的文本(而不是WordPress默认 - 平面数字)。
调用wp_link_pages_titled()
将生成自定义链接并在页面上打印。
该功能按预期工作,并生成正确的链接,但我遇到<!--pagetitle: My Title-->
不存在时使用的回退问题。
如果没有指定标题,我想恢复使用'Page [number]'作为链接文本。不幸的是,后退是打印错误的数字。
为了测试这个功能,我创建了一个包含3个分页部分的帖子,这些部分都没有标题。
链接应打印为
但是打印为
注意:主播的href属性正确,只显示的文字错误。
我在下面包含了foreach循环。我试图尽可能地评论PHP来描述正在发生的事情。
// For each paginated section
foreach ( $pages as $ndx => $part_content) {
$pageNumber = $ndx + 1;
// Check to see if the pagetitle quick tag is present
$has_part_title = strpos( $part_content, '<!--pagetitle:' );
if( $has_part_title ) {
$tagEnd = strpos( $part_content, '-->' );
$title = trim( str_replace( '<!--pagetitle:', '', substr( $part_content, 0, $tagEnd ) ) );
}
$output .= ' ';
// Generate a link to the $pageNumber -- Will not generate link for the current page
if ( ($pageNumber != $page) || ((!$more) && ($page==1)) ) {
$output .= _wp_link_page($pageNumber); // Page number is correct here - the link generated is accurate
}
echo 'Page Number: '.$pageNumber.' -- Link Generated <br /> '; // This is a test to check the value of $pageNumber. Value prints as expected
// If the pagetitle is present, use it. If not, pring 'Page [$pageNumber]'
$title = isset( $title ) && ( strlen( $title ) > 0 ) ? $title : 'Page '.$pageNumber;
$output .= $link_before . $title . $link_after;
echo 'Page Number Again: '.$pageNumber.' -- Title Generated <br> '; // This is a test to check the value of $pageNumber. Value prints as expected
// Close the generated link -- will not execute when $pageNumber == the current page
if ( ($pageNumber != $page) || ((!$more) && ($page==1)) ) {
$output .= '</a>';
}
}
// Close the "list"
$output .= $after;
}
/* Worth noting: Links are added to a single output string and printed in one go after the foreach executes.
Seems like it would be better to print each link individually */
if ( $echo )
echo $output; // When $output prints, the link text for every page is 'Page 1' for some reason, the page number here is not displayed correctly
return $output;
为什么echo $pageNumber;
会打印正确的值,但'Page '.$pageNumber
仅为每个链接打印'Page 1'?
我确信我错过了一些显而易见的东西,但我不知道它是什么。非常感谢任何帮助。
答案 0 :(得分:3)
你的逻辑是关闭的。仔细考虑设置$title
的行。
$title = isset( $title ) && ( strlen( $title ) > 0 ) ? $title : 'Page '.$pageNumber;
如果未设置$title
(第一次迭代,$pageNumber
为1),则将$title
设置为“第1页”。从那时起,$title
已设置且不会更改。您基本上说的是“如果我已将$title
设置为某个值,请将其设置为等于”。