tj-digital / instagram
一个PHP WordPress包,提供通过ACF连接器来授权和管理Instagram数据和源
Requires
- php: >=7.2
- timber/timber: ^1.20.0
- upstatement/routes: ^0.9
This package is auto-updated.
Last update: 2024-09-27 09:40:05 UTC
README
需求
为了使Instagram认证过程正常工作,您必须设置一个支持基本Instagram显示权限的Facebook应用。一旦生成,将您的 INSTAGRAM_CLIENT_ID
& INSTAGRAM_CLIENT_SECRET
值添加到项目的 .env
文件(或根据您的设置使用ENV变量),以便成功完成认证。
在Facebook应用中,您需要将所有网站URL(本地、uat & live)添加到Instagram应用设置的“Client OAuth Settings”部分中的“Valid OAuth redirect URIs”字段。格式应为:https://{your-site-url}/auth/instagram/callback
。这是应用程序传递给Instagram以验证并重定向回的URL,然后在该URL的/auth/instagram/callback
路由和ACF选项页上获取。
您还可以将此相同的URL值放入“Deauthorize”字段,尽管此回调目前在此集成中未使用。
完成此操作后,您必须将此集成将使用的所有Instagram帐户添加到“User Token Generator”部分。这会带您进入Facebook应用的“角色”页面,底部有一个名为“Instagram Testers”的部分,您可以添加Instagram帐户(通过其Instagram用户名)。一旦添加,Instagram帐户持有人需要登录到Instagram网站(目前应用中不支持),进入其设置,点击“Apps and websites”,然后点击“Tester invitations”并接受来自“Tilda Feed”的邀请。
设置
必须与ACF一起使用,并设计为与现有的自定义管理设置/选项页一起使用,如下面的示例所示,使用NanoSoup\Nemesis\ACF\BaseFields
包。
一旦配置完毕,您还必须设置SITE_SETTINGS_SLUG
环境变量,以便路由器在通过Facebook/Instagram完成授权后将CMS用户返回到网站设置页面。
注意:确保将acf/render_field/name=
替换为您的instagram字段的不同匹配字段值(如果不同于instagram_url
)。此字段不影响连接到源的视频帐户,这将在Instagram应用认证过程中处理。
// Add in your SiteSettings class (or similar) use ElevenMiles\Instagram\Admin\InstagramSettings; // Configure the instagram field reference $prefix = 'site_settings'; $settings_fields = [ $this->addTab($prefix, 'Social links'), $this->url($prefix, 'Instagram URL'), ]; acf_add_local_field_group([ 'key' => 'group_site_settings', 'title' => 'Site Settings', 'fields' => $settings_fields, // etc ]); // Add in your SiteSettings class (or similar) admin page constructor add_action('acf/render_field/name=instagram_url', [InstagramSettings::class, 'instagramAuthLink']); // Add in your theme Kernel class use ElevenMiles\Instagram\Admin\InstagramSettings; new InstagramSettings();
连接您的Instagram帐户
从代码设置完成后,请访问您的WP CMS中的网站设置页面,并点击“授权Instagram源”按钮。这将启动通过您要连接的Facebook应用和Instagram帐户的应用授权流程。
渲染Instagram源
要使用连接的Instagram
use ElevenMiles\Instagram\InstagramFeed; $instagram = new InstagramFeed(); $instagram_data = $instagram->getData(); // Pass the data to your timber context, ready to use in your twig templates $context['instagram'] = $instagram_data;
带有Instagram数据的基本twig模板(请根据您的标记和需求进行适当自定义)。
{% if instagram.results is empty %} <p>{{ instagram.error }}</p> {% else %} {% for result in instagram.results %} <a href="{{ result.link }}" target="_blank"> <img src="{{ result.thumbnail_url }}" /> </a> {% endfor %} {% endif %}
缓存
此包通过将返回的Instagram数据传递到缓存json文件来支持数据缓存,它将尝试从该文件定位
get_template_directory() . '/cache/instagram.json'
为了支持此功能,您需要确保在主题根目录中有一个缓存文件夹,并将其从主题的版本控制(例如通过.gitignore
文件)以及任何自动化部署过程中排除,以避免在部署网站更改时丢失缓存数据。