首页 > 解决方案 > get_the_ID() 函数在 init 钩子函数中不返回帖子 ID

问题描述

请考虑代码:

function mcqac_wp_enqueue_assets() {

    if (is_admin()) {

        wp_enqueue_script(
            'mcqac-js-admin', // Handle.
            PLUGIN_URL . 'build/main-admin.js',
            array( 'jquery' ), // Dependencies, defined above.
            filemtime( PLUGIN_PATH . 'build/main-admin.js' ), // Version: File modification time.
            true // Enqueue the script in the footer.
        );

        $mcqacAdminData = array();

        if (get_the_ID()) {
            $mcqacAdminData['options'] = get_post_meta(get_the_ID(), 'mcqac_options', true);
        }

        wp_localize_script('mcqac-js-admin', 'mcqacAdminData', $mcqacAdminData);
    }
}

add_action('init', 'mcqac_wp_enqueue_assets');

get_the_ID()我在编辑帖子页面时,不会返回任何内容。似乎init在发布查询之前触发了动作挂钩。

解决办法是什么?

标签: wordpress

解决方案


问题修复了admin_enqueue_scripts动作挂钩而不是init动作挂钩。并且还声明global $post从这个变量中获取帖子 ID。


推荐阅读