所以我正在尝试编写一个新的插件,因为我无法找到一个完全符合我想要的扩展性的插件。该插件的目标是能够使用一个简单的短代码来显示一个图像滑块,该滑块会自动填充您博客的最新帖子。
我已经准备好了基本的插件文件,并且实现并测试了短代码。现在我正试图让插件引入博客的最新帖子,但我遇到了一些麻烦。当我使用the_title()和the_permalink()时,它们显示在我试图包含它们的代码之外。此外,the_content()使用_permalink()和the_title()显示一次,然后第二次显示它应该是
您可以看到行为here。 这是我正在使用的代码:
function slyd( $category, $slydcount ) {
global $post;
$tmp_post = $post; // Create $tmp_post to empty $post once Slyd is done with it
$args = array(
'category' => $category,
'numberposts' => $slydcount
);
$slydposts = get_posts( $args );
foreach( $slydposts as $post ) : setup_postdata($post);
$post_permalink = the_permalink(); // Get the post's permalink
$post_title = the_title(); // Get the post's title
$post_content = the_content(); // Get the post's content - will write code to get excerpt later
return '<h2><a href="' . $post_permalink . '">' . $post_title . '</a></h2>\n'
. '<p>' . $post_content . '</p>';
endforeach;
$post = $tmp_post; // Empty $post once Slyd is done with it
}
// Create the shortcode
function slyd_shortcode( $atts ) {
// $atts ::= array of attributes
// examples: [slyd]
// [slyd category='slide']
// [slyd slydcount='5']
// [slyd theme='default']
/* Retrieve attributes set by the shortcode and set defaults for
unregistered attributes. */
extract( shortcode_atts( array(
'category' => '', // Which category(s) to display posts from
'slydcount' => '5', // How many Slyds to display
'theme' => 'default' // Which Slyd theme to use
), $atts ) );
return "<p>category = {$category}, count = {$slydcount}</p>"
. slyd( $category, $slydcount );
}
add_shortcode( 'slyd', 'slyd_shortcode' );
答案 0 :(得分:4)
默认情况下,the_title
将打印出(回显)标题。您可以将额外的参数传递给函数,以使其返回标题,如下所示:
<?php the_title('', '', false); ?>
但最好只使用get_the_title
- 同样适用于get_the_content
和get_permalink
。