【问题标题】:Need to get the Post ID inside functions.php需要在functions.php中获取Post ID
【发布时间】:2013-12-06 13:10:46
【问题描述】:

我已经讨论这个问题 HOURS 了。我至少需要一些帮助或推动正确的方向,因为我很难过。

问题:我需要在functions.php中获取帖子ID

我正在使用一个名为 SS Quiz 的插件。该插件是一个测验制作插件,您可以在其中在后端进行测验并使用 WP WYSIWYG 编辑器中的简码显示它。很简单,就像很多插件一样。

SS Quiz有一个钩子,一旦提交了测验,它将执行一段代码。以下是确切的代码和文档:

add_action('ssquiz_finished', 'after_quiz_done', 10, 4);

function after_quiz_done( $quiz_id, $user_id, $questions_right, $total_questions )
{
    // do stuff here
}
当用户完成 SSQuiz 时触发钩子

我想要做的是获取测验所在的当前帖子/页面的帖子 ID,然后执行一段代码只返回帖子 ID。从使用 global $post 到在函数内部设置 postdata(setup_postdata()),我已经尝试了所有方法。没有任何效果。我可以返回当前登录用户之类的内容,但不能返回帖子 ID。

任何人都可以对此进行测试,看看他们如何获得帖子 ID?无论是在实时服务器上还是在本地。在这一点上,我只需要朝着正确的方向前进。

任何帮助将不胜感激!

【问题讨论】:

    标签: php plugins wordpress hook


    【解决方案1】:

    也许你需要编辑插件。

    在调用动作的插件中:

    do_action( 'ssquiz_finished', $info->quiz->id, $info->user->id, $info->questions_right, $info->total_questions );
    

    将帖子 ID 添加到参数中。它使用了一个 $info 对象,该对象在 short_code 运行时在 ssquiz_start() 中设置,您将能够使用 $global 获取帖子 ID 并将其添加到 $info 对象中。

    【讨论】:

    • 谢谢,我认为你在这里是正确的。我试过这样做,我得到了 php 错误:Warning: Missing argument 5 for after_quiz_done() in C:\Program Files (x86)\wamp\www\wp-acf-test\wp-content\themes\twentythirteen\functions.php on line 563
    • 更新:只需将参数数量添加到 add_action() 函数!非常感谢。
    猜你喜欢
    • 2014-11-23
    • 2020-06-12
    • 1970-01-01
    • 2014-04-23
    • 2021-01-21
    • 2019-03-13
    • 2017-02-24
    • 2022-11-02
    • 2012-01-17
    相关资源
    最近更新 更多