在短代码中使用缩略图函数

时间:2012-05-15 作者:James

我试图弄明白为什么WP似乎无法识别短代码循环中的get\\u the\\u post\\u thumbnail()之类的函数。

例如,尝试将其添加到新的主题/插件较少的安装中。这是我的功能。php:

<?php
add_theme_support( \'post-thumbnails\' ); 

function scRecentPhoto() {
global $post;

$photoargs = array(
\'post_type\' => \'photos\',
\'posts_per_page\' => 1,
 );
$photoloop = new WP_Query($photoargs);

while ( $photoloop->have_posts() ) : $photoloop->the_post(); 
$output = get_the_post_thumbnail(array(280,130));
$output .= \'<h4><a href="\' . get_permalink() . \'">\' . get_the_title() . \'</a></h4>\';
$output .= \'<p>\' . get_the_excerpt() . \'</p>\';
endwhile;

return $output;
}
add_shortcode(\'recentphoto\', \'scRecentPhoto\');
?>
我总是会遇到一个PHP错误,例如:致命错误:调用未定义函数get\\u the\\u post\\u thumbnail()。。。

有什么想法吗?谢谢

编辑=照片CPT示例代码:

register_post_type( \'photos\',
    array(
        \'labels\' => array(
            \'name\' => __( \'Photos\' ),
            \'singular_name\' => __( \'Photo\' )
        ),
        \'public\' => true,
        \'supports\' => array(
            \'title\',
            \'editor\',
            \'author\',
            \'thumbnail\',
            \'excerpt\',
            \'comments\'
        ),
        \'capability_type\' => \'post\',
        \'rewrite\' => array(\'slug\'=> $slug)
    )
);
编辑2=做了更多的测试,结果表明,如果我直接将短代码放在帖子/小部件等中,它就可以工作。在我需要它的地方,它就不能工作,而我需要它,它在主题选项页面中。我这样称呼他:

$homeoptions = get_option(\'home_options\');
$row1box1 = do_shortcode($homeoptions[\'row1box1\']);

if ($row1box1) :
echo \'<div id="row4box1" class="box">\' . $row1box1 . \'</div>\';
endif; 
我不完全确定为什么它在选项页面中不起作用,因为我创建的其他基本短代码工作得很好。但希望这能缩小问题的范围?

3 个回复
最合适的回答,由SO网友:James 整理而成

找到了一个解决方案,只需从WP core复制并粘贴原始函数,然后为函数重命名它们。php。

不知道为什么这个变通方法在这个主题选项实例中有效,但它确实有效。

谢谢大家的帮助。

SO网友:Wyck

为了使用该函数,您需要在主题中声明它。

add_theme_support( \'post-thumbnails\' );
我测试了你的代码,效果很好,唯一可以复制你错误的方法就是删除上面的内容。

也可能是因为您似乎正在使用一个名为“照片”的CPT,您是否确保它支持正确的参数,特别是,

// rest of your CPT params
\'supports\' => array(\'thumbnail\'),

http://codex.wordpress.org/Function_Reference/register_post_type

您可以通过尝试快速测试,

add_post_type_support( \'photos\', \'thumbnail\' ) 

SO网友:mrwweb

我现在看到问题了。第一个参数是get_the_post_thumbnail() 是$ID。因此,要解决您的问题,请将该行更改为:

get_the_post_thumbnail( get_the_ID(), array(280,130) );

结束

相关推荐

Shortcode Attribute

我想为我的列短代码指定一个标题。本质上,[column title=“nameofcolumn”]内容[[columntitle]。但我不太确定在“=>”或我的div类标题之后该怎么办。我已经找了一些教程,但我找不到任何足够具体的让我理解的东西。function column_shortcode( $atts, $content = null ) { extract(shortcode_atts(array( \'title\' => \'WHAT DO