在由 Ninja Forms 构建的 Wordpress 表单中的下拉 select 菜单中显示来自 google 工作表的元素列表

Display list of elements from google sheets in drop down select menu in Wordpress Form built by Ninja Forms

所以我试图在 Wordpress 中操作 functions.php 文件以添加一个函数,该函数将使用 OAUth 2.0 或 API 调用 Google Sheets API 或API 键(以更安全的为准),获取列中的元素列表并将其存储在数组 $options 中,然后将显示为下拉菜单列表。

要使用 Ninja Forms 进行 Select 字段预填充,我提到了 https://francescocarlucci.com/wordpress/select-field-pre-population-ninja-forms/ $options 是一个数组,静态设置时会给我预期的下拉菜单: 例如-

$options[1]['label'] = "One";
$options[2]['label'] = "Two";
$options[3]['label'] = "Three"; 

我尝试了 https://developers.google.com/sheets/api/quickstart/php

中的 OAuth 2.0 方法

在行 $client->setAuthConfig( '/credentials.json' ); 中,代码无法访问文件 credentials.json。我确实在与 functions.php 相同的文件夹中添加了 JSON 文件和所有其他相关的 API 文件。我还需要一种方法来自动化

我希望元素列表显示在 Wordpress 下拉列表中。相反,我在 debug.log 文件中得到一个空白页面和以下堆栈跟踪:

[09-Jul-2019 19:46:15 UTC] PHP Fatal error:  Uncaught InvalidArgumentException: file "/credentials.json" does not exist in /var/www/html/wp-content/themes/twentynineteen/vendor/google/apiclient/src/Google/Client.php:870
#0 /var/www/html/wp-content/themes/twentynineteen/functions.php(322): 
Google_Client->setAuthConfig('/credentials.js...')
#1 /var/www/html/wp-content/themes/twentynineteen/functions.php(371): getClient()
#2 /var/www/html/wp-content/themes/twentynineteen/functions.php(437): quickstart()
#3 /var/www/html/wp-includes/class-wp-hook.php(286): select_pre_population_callback(Array, Array)
#4 /var/www/html/wp-includes/plugin.php(208): WP_Hook->apply_filters(Array, Array)
#5 /var/www/html/wp-content/plugins/ninja-forms/includes/Display/Render.php(271): apply_filters('ninja_forms_ren...', Array, Array)
#6 /var/www/html/wp-content/plugins/ninja-forms/includes/Display/Render.php(400): NF_Display_Render::localize(1)
#7 /var/www/html/wp-content/plugins/ninja-forms/ninja-forms.php(935): NF_Display_Render::localize_preview('1')
#8 /var/www/h in /var/www/html/wp-content/themes/twentynineteen/vendor/google/apiclient/src/Google/Client.php on line 870

@cabrerahector 的评论对我有用。

PHP 提示找不到 credentials.json 文件。尝试这样做: $client->setAuthConfig( get_theme_file_path('credentials.json')