alleyinteractive/wp-video-sync

将托管提供商的视频同步到WordPress

安装: 37

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 17

分支: 0

开放问题: 1

类型:wordpress-plugin

v0.1.0 2024-07-23 14:54 UTC

This package is auto-updated.

Last update: 2024-09-20 15:13:38 UTC


README

贡献者:alleyinteractive

标签:alleyinteractive, wp-video-sync

稳定版本:0.1.0

至少需要:6.0

测试到:6.6

需要PHP:8.2

许可证:GPL v2或更高版本

Testing Suite

从托管提供商同步视频到WordPress。

运行计划任务,根据视频的最后修改日期批量同步受支持的视频托管提供商的视频到WordPress。实现者负责安装和配置兼容的插件,选择它作为适配器,并定义将为每个视频运行的回调,它将负责在WordPress中执行任何创建或更新操作。

此插件是一种同步上传到托管提供商(如JW Player)的视频到WordPress的好方法,这样视频本身仍然保留在托管提供商处,但可以使用播放器块或短代码在WordPress中显示视频,并具有自己的唯一URL,还可以包含在搜索结果中。

安装

您可以通过Composer安装此包

composer require alleyinteractive/wp-video-sync

使用方法

在WordPress中激活插件并按以下方式使用

use Alley\WP\WP_Video_Sync\Adapters\JW_Player_7_For_WP;
use Alley\WP\WP_Video_Sync\Sync_Manager;
use DateInterval;
use DateTimeImmutable;
use WP_Query;

add_action( 'plugins_loaded', function () => {
	$sync_manager = Sync_Manager::init()
		->with_adapter( new JW_Player_7_For_WP() )
		->with_frequency( 'hourly' )
		->with_batch_size( 1000 )
		->with_callback(
			function ( $video ) {
				$existing_video = new WP_Query( [ 'meta_key' => '_jwppp-video-url-1', 'meta_value' => $video->id ] );
				$existing_id    = $existing_video->posts[0]->ID ?? 0;
				$duration       = '';
				try {
					if ( ! empty( $video->metadata->duration ) ) {
						$duration = ( new DateTimeImmutable() )
							->add( new DateInterval( sprintf( 'PT%dS', (int) $video->metadata->duration ) ) )
							->diff( new DateTimeImmutable() )->format( 'H:i:s' );
					}
				} catch ( Exception $e ) {
					$duration = '';
				}
				wp_insert_post(
					[
						'ID'            => $existing_id,
						'post_type'     => 'post',
						'post_status'   => 'publish',
						'post_title'    => $video->metadata->title,
						'post_content'  => $video->metadata->description ?? '',
						'post_date'     => DateTimeImmutable::createFromFormat( DATE_W3C, $video->created )->format( 'Y-m-d H:i:s' ),
						'post_modified' => DateTimeImmutable::createFromFormat( DATE_W3C, $video->last_modified )->format( 'Y-m-d H:i:s' ),
						'meta_input'    => [
							'_jwppp-video-url-1'           => $video->id,
							'_jwppp-cloud-playlist-1'      => 'no',
							'_jwppp-sources-number-1'      => 1,
							'_jwppp-video-title-1'         => $video->metadata->title,
							'_jwppp-video-description-1'   => $video->metadata->description ?? '',
							'_jwppp-activate-media-type-1' => 0,
							'_jwppp-playlist-carousel-1'   => 0,
							'_jwppp-video-duration-1'      => $duration,
							'_jwppp-video-tags-1'          => $video->metadata->tags ?? '',
						],
					]
				);
			}
		);
} );

这将配置插件,每小时从JW Player导入一批1000个视频,按最后更新时间从少到多排序,从最后更新的视频的日期和时间开始。如果已导入视频(如唯一视频ID的保存postmeta值所标识),则将更新而不是创建。将创建新视频。上面的示例代码使用post文章类型,但代码可以很容易地修改为使用自定义文章类型。此外,可以将文章内容设置为包括Gutenberg块或播放器短代码。

支持的适配器

目前,此插件仅支持WordPress的JW Player 7(免费和付费版本)。将来可能会添加其他适配器。

WordPress的JW Player 7

发布插件

一旦准备就绪,此插件的新版本将作为GitHub上的发行版创建。

变更日志

有关最近更改的更多信息,请参阅变更日志

致谢

此项目由Alley Interactive积极维护。喜欢您看到的内容?加入我们工作

许可证

GNU通用公共许可证(GPL)。有关更多信息,请参阅许可证文件