tj-digital/instagram

一个PHP WordPress包,提供通过ACF连接器来授权和管理Instagram数据和源

v1.4.0 2024-09-27 09:32 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文件)以及任何自动化部署过程中排除,以避免在部署网站更改时丢失缓存数据。