如何调用要在页面上使用的函数?

时间:2013-05-12 作者:John

我希望能够为页面上列出的所有帖子使用一个名为DisplayAverageRating的函数。可在此处找到该函数:http://pastebin.com/iXym00QM

我应该如何在代码中调用它来显示每个帖子的平均评分?

我已经走了这么远,但还没有成功:

<div style="">
<h3></h3>
<ul>
<?php
$args = array( \'numberposts\' => 200, \'orderby\' => \'rand\' );
$rand_posts = get_posts( $args );
foreach( $rand_posts as $post ) : ?>
<li>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>

<?php if(function_exists(\'DisplayAverageRating\')) 
{ 
DisplayAverageRating(); 
} 
?>

</li>
<?php endforeach; ?>
</ul>
</div><!-- Randomized Posts -->
非常感谢你的帮助。

2 个回复
SO网友:Rarst

看看代码,它不是一个函数,而是一种CommentRatingFieldPlugin 类,其实例正在分配给$crfp 全局变量。

所以你应该是这样的:

global $crfp;
$crfp->DisplayAverageRating();

SO网友:s_ha_dum

您处理的是类方法,而不是函数。往下看代码的底部,你会看到。。。

$crfp = new CommentRatingFieldPlugin(); // Invoke class
$crfp 是类实例。你需要一些像。。。

global $crfp;
if (isset($crfp) && method_exists($crfp,\'DisplayAverageRating\')) {
  $crfp->DisplayAverageRating(\'\');
}
Themethod_exists 检查可能有些过分,但如果插件更新时类发生更改,则可以防止出现错误。

该函数需要一个参数($content) 所以我添加了一个空字符串,它假设/使用全局$post 变量,因此它只能在循环内可靠地工作。不过,看起来它应该能正常工作。

此外,它还连接到the_content 因此,它应该已经在至少一些地方显示出来了,无论在哪里the_content 被调用。

结束

相关推荐

如何在Functions.php中使用PHP手动修复WordPress库代码?

Wordpress为内置的gallery功能输出了一些非常糟糕的代码,这已经被谈论了很多次了。这是负责库输出的核心代码(在/wp-includes/media.php中):function gallery_shortcode($attr) { global $post; static $instance = 0; $instance++; // Allow plugins/themes to override the de