定制 drsdre/yii2-wordpress-api 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

drsdre/yii2-wordpress-api

Composer 安装命令:

composer require drsdre/yii2-wordpress-api

包简介

Yii2 Extension to connect with a Wordpress Rest API using oAuth or basic authentication

README 文档

README

Yii2 client for Wordpress Rest API (part of core as of Wordpress 4.7)

Full API Documentation here: http://v2.wp-api.org/

Requirements:

PHP5 with CURL extensions.

Installation

The preferred way to install this extension is through composer.

Either run

composer require --prefer-dist drsdre/yii2-wordpress-api "*"

or add

"drsdre/yii2-wordpress-api": "*"

to the require section of your composer.json file.

Authorisation Setup

Setup a connection using either using

oAuth1

The example below uses a model to store Wordpress authorisation data. The fields required are:

  • site_url [string]
  • client_key [string]
  • client_secret [string]
  • access_token [Json string]

You need a web action to authorize the oAuth1 access.

    /**
	 * Execute oAuth verification
	 *
	 * @param $id of wordpress_site record
	 * @param null $oauth_token
	 *
	 * @return yii\web\Response
	 */
	public function actionVerifyAccess($id, $oauth_token = null) {
		$this->findModel( $id );

		// Open Wordpress Auth API
		$oauthClient = new WordpressAuth([
			'apiBaseUrl' => $this->site_url, // https://www.yoursite.com/ (without API directory)
			'consumerKey' => $this->model->client_key,
			'consumerSecret' => $this->model->client_secret,
		]);

		try {
			if (is_null($oauth_token)) {
				// If no authorisation token, start authorization web flow
				
				// Must set return URL without parameter to prevent 'OAuth signature does not match' error
				$oauthClient->setReturnUrl(
					yii::$app->getRequest()->getHostInfo().'/'.
					yii::$app->getRequest()->getPathInfo().'?id='.$id);
					
                // Get request token
				$oauth_token = $oauthClient->fetchRequestToken();
				
				// Get authorization URL
				$url         = $oauthClient->buildAuthUrl($oauth_token);
				 
				// Redirect to authorization URL
				return $this->redirect($url); 
			}

			// After user returns at our site:
			$access_token = $oauthClient->fetchAccessToken($oauth_token);
			
			// Upgrade to access token
			$this->model->access_token = yii\helpers\Json::encode($access_token->params);
			
			// Save token to record
			$result = $this->model->save();
			
		} catch (yii\base\Exception $e) {
			yii::$app->session->setFlash( 'alert', [
				'body'    => yii::t( 'app', 'Verification failed. Error: ' ).$e->getMessage(),
				'options' => [ 'class' => 'alert-danger' ],
			] );
		}

        // Redirect to main overview
		return $this->redirect('/wordpress_site/'); 
	}

With the access token, the Wordpress API can be initialised like this:

$wordpress_credentials = [ 
   'endpoint'      => $WordpressSite->site_url,
   'client_key'    => $WordpressSite->client_key,
   'client_secret' => $WordpressSite->client_secret,
   'access_token'  => Json::decode( $WordpressSite->access_token ),
];

$WordpressApiClient = new drsdre\WordpressApi\Client( $wordpress_credentials );

Basic Authentication

$wordpress_credentials = [ 
   'endpoint' => $WordpressSite->site_url,
   'username' => $WordpressSite->username,
   'password' => $WordpressSite->password
];

$WordpressApiClient = new drsdre\WordpressApi\Client( $wordpress_credentials );

Use the API

Once the Wordpress API Client is authorized, request can be made to the API.

Retrieve paged data:

$api_post_page        = 1;

do {
    $ApiResult = $WordpressApiClient->getData(
        '',
        'edit',
        $api_post_page,
        $WebsiteWp->get_page_size
    );
    $data = $ApiResult->asArray();
    < do something with the data >
} while ( $api_post_page <= $ApiResult->result_total_pages );

See

That's all!

drsdre/yii2-wordpress-api 适用场景与选型建议

drsdre/yii2-wordpress-api 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 2.57k 次下载、GitHub Stars 达 9, 最近一次更新时间为 2017 年 01 月 06 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「rest」 「api」 「oauth」 「cms」 「wordpress」 「extension」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 drsdre/yii2-wordpress-api 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 drsdre/yii2-wordpress-api 我们能提供哪些服务?
定制开发 / 二次开发

基于 drsdre/yii2-wordpress-api 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 2.57k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 9
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 9
  • Watchers: 3
  • Forks: 5
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2017-01-06