Posts Tagged ‘wordpress’

GreasemonkeyからXMLRPCプロトコルでブログに投稿する

XML-RPCを使ってWordpressやMovable Typeなどのブログに投稿するGreasemonkeyの書き方みたいなものです。
XMLRPCに対応したブログにどういうものがあるかは下のサイトによくまとまってます。(ちょっと古いですが)

BlogWrite – Atom API, XML-RPC
http://www.witha.jp/BlogWrite/bloglist.html

WordpressでしかテストしてませんがXMLRPCに対応してるブログなら動作すると思います。
今回は投稿機構みたいなものを書いただけなので、このスクリプトだけではあんまり意味はないと思います。

// ==UserScript==
// @name           XMLRPC poster
// @namespace      http://efcl.info/
// @include        http://*
// ==/UserScript==

/* 投稿先のメタ情報 */
var metaBlog = {
	"endPoint" : "ブログのエンドポイントURL",
	"blogid"   : "ブログのログインID",
	"username" : "投稿者名", //空だとblogidを使用
	"password" : "パスワード"
}

var XMLRPC = (function() { this.initialize.apply(this, arguments); });
XMLRPC.prototype = {
	/*
	 * @arg
		{
				"endPoint": "endPoint",
				"blogid"   : "blogid",
				"username" : "username",//空だとblogidを使用
				"password" : "password"
		}
	*/
	initialize : function(arg) { //引数は{}オブジェクト
		this.endPoint = arg.endPoint;
		this.blogid   = arg.blogid;
		this.username = (arg.username) ? arg.username : arg.blogid;
		this.password = arg.password;
	},
	/* *
	 * @title 記事タイトル
	 * @desc 記事内容
	 * @tags タグ(カンマ区切り)
	 * @callback 更新成功時のコールバック関数
	 */
	post : function (title, desc, tags, callback){
		var postURI = this.endPoint;
		this.tags = (tags.length == 0) ? "" : tags.join(",");
		var XMLbody = '<?xml version="1.0"?>\n';
		XMLbody += this.template(title, desc , this.tags);
		console.info(XMLbody);
		GM_xmlhttpRequest({
			method : "POST",
			headers : {
				'Content-type' : 'text/xml'
			},
			url : postURI,
			data : this.template(title, desc , tags),
			onload : callback,
		})
	},
  template : function (title, desc , tags){
    var repuest =  <methodCall>
                      <methodName>metaWeblog.newPost</methodName>
                      <params>
                        <param>
                          <value>
                            <string>{this.blogid}</string>
                          </value>
                        </param>
                        <param>
                          <value>
                            <string>{this.username}</string>
                          </value>
                        </param>
                        <param>
                          <value>
                            <string>{this.password}</string>
                          </value>
                        </param>
                        <param>
                          <value>
                            <struct>
                              <member>
                                <name>title</name>
                                <value>
                                  <string>{title}</string>
                                </value>
                              </member>
                              <member>
                                <name>description</name>
                                <value>
                                  <string>{desc}</string>
                                </value>
                              </member>
                              <member>
                                <name>mt_keywords</name>
                                <value>
                                  <string>{tags}</string>
                                </value>
                              </member>
                              <member>
                                <name>mt_allow_comments</name>
                                <value>
                                  <boolean>1</boolean>
                                </value>
                              </member>
                            </struct>
                          </value>
                        </param>
                        <param>
                          <value>
                            <boolean>1</boolean>
                          </value>
                        </param>
                      </params>
                    </methodCall>;
		return repuest.toString();
	}
}
/* init メタ情報を使って投稿先決める*/
var t = new XMLRPC(metaBlog);
t.post(
	"title",
	"description",
	["tag1","tag2"],
	function(res){//callback
		console.log(res);
	}
);

ブログのエンドポイントURLは各ブログによってまちまちですが、Wordpressだとhttp://Wordpressトップ/xmlrpc.php
になります。

E4Xを使ってポストするXMLを作成していますが、先頭に<?xml version=”1.0″?>を入れるとなぜかエラーになったので、後で結合するようにしました。
後、XMLRPCを使ってWordpressにタグを指定できるのかを検索した時、下のようにできないというのが出てきましたが、mt_keywordsにタグを指定できます。
なので下の情報は古いか間違っています。

WordPressでXML-RPCを使った投稿で、記事にタグの指定はできるのでしょうか。できるようでしたらやり方を書いたページを教えてください。.. – 人力検索はてな

Wordpressでは,で区切る事でタグを複数指定できます。
カテゴリーは面倒だったので放置してます(誰か…)

記載したソースは自由に使用してください。
gist: 224968 – GitHub

参考

肉少なめ | Item – Greasemonkeyでブログを更新
http://niku.suku.name/item/591
MovableType で使える XML-RPC API
http://www.na.rim.or.jp/~tsupo/program/blogTool/mt_xmlRpc.html#w01
XML-RPC経由の投稿 でタグを登録したい « Selflow WordPress
http://www.selflow.com/?p=6

Wordpress 移転と使用プラグインのまとめ

 

サーバ移転してプラグインやテーマも切り替えたのでメモ。

サーバ移転の参考

[WP]WordPressのサーバー&ドメイン移転メモ | emuxx blog
基本的なやり方が書いてある。
301リダイレクトの方法
WordPressのサーバー&ドメイン移転 | WordPress | 『Weblogy』

Wordpressで使ってるプラグイン

WordPressの自動バックアップをGmailで取る | VIVABlog
Gmailにgzipで圧縮したデータベースをバックアップする。
WordPress › 404 Notifier « WordPress Plugins
404が発生したページをRSSまたはメールで知らせてくれる。
移転したときなどの調査が楽になる。
関連エントリーの自動作成プラグイン『YARPP』 | WordPress | 『Weblogy』
記事の本文等を解析して、自動的に関連記事をグルーピングするプラグイン。日本語に対応してる。
閾値は3にして使用してる。
関連記事リストを作成するプラグインのまとめなども書いてあるので読んでおくべき。
Yuriko.Net » WP-PageNavi を使わずにナビゲーション表示
どちらにしてもテーマをいじらないといけないのでこっちの方が楽だった。
Maintenance Mode Plugin — Software Guide
管理者だけにページを表示するメンテナンスモードをつける。
日本語化ファイル
guff : Post Updated
投稿の更新日時を表示するプラグイン。
自分的には必須な気がする。デフォルトで用意されてそうな気もするけど。
WordPress › PS Disable Auto Formatting « WordPress Plugins
自動整形を停止するプラグイン。
記事やコメントなど適応する範囲を指定できる。
過去の記事への適応も考慮されている。
自動整形は記事中にソースコードを書いたりする時邪魔になったり、floatをclearするタグが消えたりしてたから入れてた。
多分これを入れるとScribeFireとかからの投稿でおかしくなるかも。
自動整形機能のイライラを軽減するGoogle Syntax Highlighterプラグイン | とりさんのソフト屋さん
ソースコードをpreタグに入れてビジュアルとHTMLモードを往復を可能にする。
これがあれば自動整形があってもソースが書ける。
[WP:Plugin] 被ブックマーク数表示+ランキング生成プラグイン | AOINA.COM
国内のSBMに対応してる&記事の被ブックマーク数をカスタムフィールドに保存できる。
人気記事をランキングできるので重宝してる。wp-sbm_popular_entry
記事下に注釈を表示するプラグイン「WP-Footnotes」 » FORGET
特定のフォーマットで書くことではてなダイアリーみたいな注釈表記ができる。
((の前に半角スペースが必要
ページトラックバックプラグイン | ABCP-weblog
ページにトラックバックを送信する機能をつける.
何でデフォルトでないのかが不思議。 ((WordPress2.8以上で動作))
WordPress › Enhanced Recent Posts « WordPress Plugins
新着記事ウィジェットの上位互換です。
更新された記事や含むカテゴリーなども設定できる。
WordPress Plugins/JSeries » Feed Control 日本語版
RSSに更新された記事を含められる。
ただしATOMは対応してない。対応してるプラグインあったら教えて欲しいです。

 

SyntaxHighlighter Plusから別のソースコードハイライトプラグインへ乗り換える

SyntaxHighlighter Plusは便利なのですが、ビジュアルエディタとの行き来で壊れるので、とても不便です。
そこで別のソースコードハイライトプラグインを探したところいい感じのものがあったので、乗り換える事にしました。

Google Syntax Highlighter for WordPress HF Edition
http://soft.fpso.jp/develop/wordpress/plugin/entry_1219.html

HTMLモードとビジュアルモードを行き来しても大丈夫なように作成されているので、とても便利です。
(エディタのHTMLモードでソースコードを記述したら一旦保存してください。保存する前にビジュアルモードにするとソースコードが崩れます。
しかし両方のプラグインを入れておくのは無駄なので、SyntaxHighlighter Plusを外せるように過去記事の書き換えが必要です。

SyntaxHighlighter Plusは

[sourcecode language='javascript']
[/sourcecode]
または
[javascript]
[/javascript]

の形を直接埋め込んでいるので、Search Regex Pluginを使って手動で書き換えていきます。

HF Editionは以下のような書式なので、[sourcecode language='javascript'] → <pre class=”brush:javascript;”>のように置換していく。

<pre class="brush:html;">
言語名は小文字
ソースコード
</pre>

これで乗り換えは完了します。

次に、HF Editionの書式は少し冗長なので、簡単に入力できるように定型文プラグインを導入します。
AddQuicktagはHTMエディタのところに定型文を挿入できるボタンを簡単に追加できます。

AddQuicktag
http://wordpress.org/extend/plugins/addquicktag/

設定メニューからHF Editionの書式で書く言語別に作っておくと便利です。

<pre>の後に改行しておくといい

preの後に改行しておくといい

 

Google Syntax Highlighter for WordPress HF Edition
http://soft.fpso.jp/develop/wordpress/plugin/entry_1219.html
Search Regex Plugin
http://urbangiraffe.com/plugins/search-regex/
AddQuicktag
http://wordpress.org/extend/plugins/addquicktag/

そのページについて言及しているtwitterの発言を表示するJavascript

Twitterは日本でも一部では人気のあるウェブサービスですが、発言の中ではURLを貼ってサイトについて言及している発言も多く見かけます。
そのような発言を言及されたページから見られると便利だと思いませんか?
最近類似するものが多くなってきたのでまとめてみた。

twitterer anywhere
http://twitterer.moongift.jp/

MOONGIFT製のもので、検索結果をキャッシュして置いたものを使用しているので負荷が少なくて済む。
また通常のURLから検索を行ってもTinyURL化したものを披露ので効率がよい。
Javascriptを埋め込んで使うが、JSONPを直接取得する形でも利用してよいとのこと。
これを利用したGreasemonkeyとして
twitteranywhereview.user.jsがある

Tweetbacks for WordPress
http://yoast.com/tweetbacks-wordpress/

Wordpressのプラグイン。
こちらもデータをキャッシュした結果を使用している。

TweetBacks Beta
http://danzarrella.com/tweetbacks-beta.html

javascript埋め込み型。
毎回検索を行う。

Tweet Me!
http://code.google.com/p/tweetme/

こちらもTweetBacks Betaと同様に埋め込み型で毎回検索を行う。
表示をカスタマイズできる

使い勝手や日本製ということを含めるとtwitterer anywhereが一番使い勝手がよいものになる。

WordPress 2.6 でタグ名が表示されない(2バイト文字)

WordPress 2.6ではタグページの表示にバグがあるみたいで、タグに日本語などの2バイト文字がある場合
タグが表示されないようです。
(<?php single_tag_title(); ?>の返り値がNULLになる)

WP2.6.1では改善されるようなので、運営に致命的な影響を与えるわけではないのでバージョンアップ待ちで大丈夫かと。
今すぐに直したい方はwp-includes/taxonomy.phpをhttp://trac.wordpress.org/export/8364/branches/2.6/wp-includes/taxonomy.phpに置き換えることで直ると思います。

Wordpressはセキュリティ面からも狙われやすいことも多いので、バージョンアップはできるだけ早く行うといいです。

Wordpress2.5.1に更新+プラグインも更新

Wordpressのバージョンを2.5.1に更新しました。
特にテーマがおかしくなったりはしませんでしたが、WP Trackback for Pagesが動かなくなりました。
以外にも他のプラグインはそのままでも動いたので楽で良かった。

ついでに少しプラグインを追加して、更新したページも新着に表示するようにしてみました。

Feed Control(古いのにまだ動くとは)+mcRSSlistという組み合わせで表示しています。
もっと簡単にできる方法があったらいいな。

うちのサイトのRSSを取りたい場合はRSS2.0(右上にあるEntries RSS)から取ることをオススメしときます。
atomの方は更新した情報(新着だけ)を含まないみたいなので。

2.5にバージョンをあげてみた感想ですが、管理画面が少し縦長になった感じがするのと、ダッシュボードの情報がいろいろと増えたりしてました。
メディアライブラリーとかいう画像の管理画面が増えたりしてますが、特に理由がなければまだ2.3でも大丈夫な気がします。

ニコニコ動画用のGreasemonkeyスクリプトのまとめ更新

Web scratch » ニコニコ動画用Greasemonkeyスクリプトのまとめ
を更新した。

まとめ系の投稿はWordpressのページという機能(通常の投稿とは別に分けられてる) で作成している訳なんだけど、ページで作成したものはRSSに反映しないし、RSS周りの機能を強化するプラグインを探さなきゃ使いづらい。
こういう更新しました的なものはいちいち書きたくないのでこれで最後に練ればいいけど。

一つプラグインを見つけたけどRSS2.0にしか反映してないので他を探すか、改造するか…
(うちはAtomの方のRSSを取ってる人の方が多いので。)

プロフィール: azu(あず)
Firefoxの事やソフトウェアの紹介や使い道、Greasemonkeyの作成
  • OS:Vista
  • ブラウザ:Firefox
  • Twitterのアカウントはこちら
  • azu_re
  • メールアドレス(Twitterの方が確実)
  • info@ドメイン名
リンク
あわせて読みたい