我怀疑问题在于:
echo number_format(get_post_meta($post->ID, "like", true) * 1, 0, \',\', \'.\')
在这里,我们使用名为
like
然后乘以1,如果post meta不包含数字呢?如果它包含其他内容呢?
例如,如果我们2 x 4
, 我们希望PHP给我们8,这是正确的,但如果我们告诉PHP多个2 x "hello"
? 或 -
? 当这种情况发生时,PHP将抛出一个警告,与您遇到的警告相同。
因此,首先,不要将所有内容都涂抹在一行上,使用变量存储post meta输出:
$like = get_post_meta( $post->ID, "like", true );
然后改用该变量:
echo number_format($likes, 0, \',\', \'.\')
至此,我们可以检查变量并将其格式化为数字:
if ( !is_numeric( $likes ) ) {
$likes = 0;
}
所以如果
$likes
是一个
false
或错误值,我们将其设置为
0
而不仅仅是盲目地使用它,并希望得到最好的结果。
最后,这条线有很多事情要做,所以这可能根本不是引起警告的问题,这是不可能的。将来,而不是:
<a class="like" data-image="<?php bloginfo(\'template_url\');?>/images/loading.gif" data-field="like" data-nonce="<?php echo $nonce ?>" data-post_id="<?php echo $post->ID ?>" href="<?php echo $link ?>" title="Like"><span><?php echo number_format(get_post_meta($post->ID, "like", true) * 1, 0, \',\', \'.\'); ?></span></a>
执行:
<a
class="like"
data-image="<?php bloginfo(\'template_url\');?>/images/loading.gif"
data-field="like"
data-nonce="<?php echo $nonce ?>"
data-post_id="<?php echo $post->ID ?>"
href="<?php echo $link ?>"
title="Like"
>
<span>
<?php echo number_format(get_post_meta($post->ID, "like", true) * 1, 0, \',\', \'.\'); ?>
</span>
</a>
<上面的代码片段不包含任何修复,但是,它更容易阅读,也更容易调试,从而消除了对哪部分代码有问题的所有猜测