Functions are causing errors

时间:2014-05-25 作者:PirateScott

我在插件的PHP上声明一个函数。插件在每个帖子的顶部加载代码(帖子布局是插件的名称)。

无法在/home/content/08/10290908/html/wp-content/plugins/post-layout/plugin.php(181):eval()\'d code:4)中重新声明vote\\u-up()(之前在/home/content/08/102908/html/wp-content/plugins/post-layout/plugin.php中声明)。php(181):第36行的eval()\'d代码

这是显示的错误消息,不是因为函数已经在函数中声明了。php(我知道,因为我通过将其重命名为各种名称对其进行了测试)它说它已经在我用来加载代码的插件中声明了。

代码如下:

<?php 

function vote_up(){
                    if($post_vote == "9"){

        }
        elseif($post_vote == "8"){
        update_post_meta( get_the_ID(), \'post_vote\', \'9\', \'8\');
        }
        elseif($post_vote == "7"){
        update_post_meta( get_the_ID(), \'post_vote\', \'8\', \'7\');
        }
        elseif($post_vote == "6"){
        update_post_meta( get_the_ID(), \'post_vote\', \'7\', \'6\');
        }
        elseif($post_vote == "5"){
        update_post_meta( get_the_ID(), \'post_vote\', \'6\', \'5\');
        }
        elseif($post_vote == "4"){
        update_post_meta( get_the_ID(), \'post_vote\', \'5\', \'4\');
        }
        elseif($post_vote == "3"){
        update_post_meta( get_the_ID(), \'post_vote\', \'4\', \'3\');
        }
        elseif($post_vote == "2"){
        update_post_meta( get_the_ID(), \'post_vote\', \'3\', \'2\');
        }
        elseif($post_vote == "1"){
        update_post_meta( get_the_ID(), \'post_vote\', \'2\', \'1\');
        }
        elseif($post_vote == "0"){
        update_post_meta( get_the_ID(), \'post_vote\', \'1\', \'0\');
        }
            else{//do nothing
        };
}

//if the post is pending show
if(get_post_status() == \'pending\') {

//if the user is logged in show
if ( is_user_logged_in() ) {

    add_post_meta( get_the_ID(), \'post_vote\', \'0\', true );
    $post_vote = get_post_meta( get_the_ID(), \'post_vote\', true );

    echo \'Votes: \' . $post_vote;

           echo \' <form action="xxx" method="post" onclick="return vote_up()">\';
           echo \' <input type="button" value="Vote Up" />\';
           echo \'</form>\';


} else {
    echo\'Please Sign in to Vote\';
}

} else {
// do nothing
}


?>
上面的代码基本上是在尝试这样做,当您单击按钮时,投票meta\\u键将上升1。这是为了投票,所以一旦有10个用户投票,它就会发布。

这个愚蠢的纽扣真是麻烦事,我不能继续下去,直到我把它修好了,甚至还想付钱给人修纽扣,但他一点线索都没有

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

您不想添加function vote_up() { [...] } 如果您在一页上显示多篇文章,请在每篇文章的顶部显示。您要声明vote_up() 函数在插件的PHP文件中。

一旦插件声明了函数,只要插件处于活动状态,您就可以在任何需要的地方调用该函数。

然而,我建议进行两项进一步的修改:

为函数名添加前缀vote_up 是相当通用的,您可能会与其他插件和/或主题发生冲突。类似于[plugin_name]_vote_up() 会很好地工作。

在使用该功能之前,请检查该功能是否存在vote_up 插件之外的任何地方(例如主题模板文件),围绕调用如下:

if ( function_exists( \'vote_up\' ) ) {
    vote_up();
}
如果您出于某种原因需要/想要停用插件,这将确保您的主题文件仍能正常运行。

结束

相关推荐

通过函数在帖子下方插入WordPress标签。php

我正在从头开始构建自己的Wordpress主题,而我对PHP的知识有限。我想做的是在每篇文章下面插入标签。我可以通过在单曲中插入代码来实现这一点。php文件,但我想通过functions.php 文件我已经通过函数在每篇帖子下面插入了作者框。php文件。我在网上的某个地方得到了它的代码,我想对标签做同样的事情。这是我的functions.php 文件function get_author_bio($content=\'\') { global $post; $post_au