RSS

タグ別アーカイブ: WordPress

WordPress.ORGからプラグインのダウンロード数を取得するPHPスクリプト

WordPress.ORGの「Plugin Directory」に登録されているプラグインのダウンロード数を取得する。

WP-Stats-Dashboardからコードを流用。

設定: プラグインの個別ページのURL。
ダウンロード数の取得: stat_count()を実行。

<?php
/**
Author: dligthart
Origin: WP-Stats-Dashboard(WPSDStats.php, WPSDPluginStats.php)
Update: redcocker 2012/2/13
**/

function stat_count() {
	// Setting
	$address = 'プラグインページのURL';

	$xml = fetchDataRemote($address);

	$stat_count = get_stat_count($xml);

	return $stat_count;
}

function fetchDataRemote($url, $agent = 1) {

	if ('' == $url) return false;

	$xml = '';

	if (function_exists('curl_init')) {

		$ch = curl_init();

		$timeout = 2;

		curl_setopt($ch, CURLOPT_URL, $url);

		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

		curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);

		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

		switch ($agent) {
		default:
		case 1:
			curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.A.B.C Safari/525.13");
			break;
		case 2:
			curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.8) Gecko/20100722 BTRS86393 Firefox/3.6.8 ( .NET CLR 3.5.30729; .NET4.0C)");
			break;
		case 3:
			curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1");
			break;
		}

		$xml = curl_exec($ch);

		curl_close($ch);
	}
	else {

		$xml = file_get_contents($url);
	}

	return $xml;
}

function get_stat_count($data) {

	preg_match("@<strong>Downloads: </strong>(.*?)<br />@", $data, $matches);

	$str = str_replace(',','',$matches[1]);

	settype($str, 'integer');

	return number_format($str);
}

?>

これだけのために余計なトラフィックを生むのが難点。APIがあれば・・・。

広告
 
コメントする

投稿者: : 2012/02/13 投稿先 Codes, Knowledges

 

タグ: ,

現在適用されているフィルターの一覧を格納するWordPressの変数

現在適応されている全てのフィルターを知りたいなら、変数「$wp_filter」を参照すると良い。

 
コメントする

投稿者: : 2011/11/16 投稿先 Knowledges

 

タグ:

WordPressのcomment_save_preフック

Codexによると、フィルターフックの「comment_save_pre」は、

comment_save_pre フィルター関数引数: comment_post_ID、comment_author、comment_author_email、comment_author_url、comment_content、comment_type、user_IDのインデックスを含むコメントデータ配列 コメントを更新・編集する直前に、コメントデータに適用される。

とあるので、難しく考えていたが、何のことはない。

受け取るデータは、コメントの本文のみであり、コメントの本文を引数として渡してあげればOKだった。

以下の例は、preタグ内の記述を実体参照にエスケープする処理。

add_filter('comment_save_pre', 'wp_sh_escape_comment_updated');

function wp_sh_escape_comment_updated($content) {
global $wp_sh_setting_opt;
$match_num = preg_match_all('|<pre[^>]*?>.*?</pre>|is', $content, $match);
if ($match_num != 0 || $match_num != false) {
for ($i = 0; $i < $match_num; $i++) {
$code = preg_replace('|<pre[^>]*?>(.*?)</pre>|is', '$1', $match[0][$i]);
if (strpos($code, "<") !== false || strpos($code, ">") !== false || strpos($code, '"') !== false || strpos($code, "'") !== false || preg_match('/&[^(lt;)|(gt;)|(amp;)|(quot;)|(#039;)]/', $code)) {
$replaced_code = htmlspecialchars($code, ENT_QUOTES, 'UTF-8');
} else {
$replaced_code = $code;
}
$content = preg_replace('|'.preg_quote($code, '|').'|', $replaced_code, $content);
}
}
return $content;
}
 
コメントする

投稿者: : 2011/11/09 投稿先 Knowledges

 

タグ:

WordPressとエディター画面とjQuery UI

WordPressの投稿、固定ページの編集画面では、jQuery UIが読み込まれている。

パット見た感じ、3.1からは、そうなっている。3.0以前はよく分からない。

「リンクの挿入/編集」ボタンのポップアップダイアログが、このjQuery UIに依存している。

なので、下手に別途jQuery UIを読み込むと「リンクの挿入/編集」が影響を受ける。

エディター画面で読み込まれるjQuery UIに依存してポップアップダイアログを生成するなら「dialogClass」は、「wp-dialog」にすれば良い。

 
コメントする

投稿者: : 2011/11/04 投稿先 Knowledges

 

タグ:

WordPreasのグローバル変数

WordPressが定義している(グローバル)変数。

WordPress Global Variables

ちょっと古い情報。

 
コメントする

投稿者: : 2011/10/31 投稿先 Documents, Knowledges

 

タグ:

WordPressの登録済みスクリプト

ハンドルの指定のみでwp_enqueue_script()関数を使って読み込めるJavaスクリプト。

Function Reference/wp enqueue script

 
コメントする

投稿者: : 2011/10/31 投稿先 Documents, Knowledges

 

タグ:

WordPressのプラグイン自動更新時の処理についての注意

自動更新は、管理画面上の処理ではあるが、「admin_menu」にフックされた処理は自動更新時には走らない。

別の管理画面のページに遷移した後に走る。

自動更新と同時に処理させるなら「plugins_loaded」などにフックすること。

 
コメントする

投稿者: : 2011/10/01 投稿先 Documents

 

タグ: