リンク集的なものが作れるやつを作成

あまりにも中途半端だけど一応動く。

colinkr(http://alpha-version.com/colinkr)

Google ChromeやSafariの初期画面っぽい感じでサイトのサムネイル画像が一覧で見れるやつのWeb版。

画像の生成はWordPress.comのAPIに丸投げしてキャッシュを全く生成していない。おまけにタイトルタグはfile_get_contents関数で引っ張ってきてるので1つのリンク集にURLを10個くらい登録すると非常に重い。相手方のサーバーに負荷をかけるクソ仕様。

前に、フランス人かスウェーデン人あたりが簡単にWebサイトのブックマークリストとか1ページだけのWebサイトとかを作れるサービスを公開してた気がするんですけど、サービスの名前を忘れてしまったので仕方ないので作りました。

ベースにはFluid Squares V2というレスポンシブレイアウトのフレームワークを使用。(ライセンスが書いてない事に今さら気付いた・・・)
WordPressで作ってるので、tanzakuテーマとかを使わせてもらった方が良かったかもしれない。

WordPressマルチサイトのサイト一覧画面にblog IDを追加する

以下のサイトにコードが掲載されていました。

View Blog ID in WordPress Multisite

こんな感じでプラグインとして使えば良いようです。

<?php
/*
Plugin Name: Add Blog ID for Multisite
Plugin URI: http://wpengineer.com/2188/view-blog-id-in-wordpress-multisite/
Description: ネットワーク管理者のサイト一覧画面に各ブログのIDを追加します。
Author: WPengineer.com
Version: 1.0
Author URI: http://wpengineer.com/
*/
class Add_Blog_ID {
	public static function init() {
		$class = __CLASS__ ;
		if ( empty( $GLOBALS[ $class ] ) )
			$GLOBALS[ $class ] = new $class;
	}
	public function __construct() {
		add_filter( 'wpmu_blogs_columns', array( $this, 'get_id' ) );
		add_action( 'manage_sites_custom_column', array( $this, 'add_columns' ), 10, 2 );
		add_action( 'manage_blogs_custom_column', array( $this, 'add_columns' ), 10, 2 );
		add_action( 'admin_footer', array( $this, 'add_style' ) );
	}
	public function add_columns( $column_name, $blog_id ) {
		if ( 'blog_id' === $column_name )
			echo $blog_id;
		return $column_name;
	}
	// Add in a column header
	public function get_id( $columns ) {
		$columns['blog_id'] = __('ID');
		return $columns;
	}
	public function add_style() {
		echo '<style>#blog_id { width:7%; }</style>';
	}
}
add_action( 'init', array( 'Add_Blog_ID', 'init' ) );
?>

上記のコードを「add_blog_id.php」とでも名前をつけて保存し、
「/wp-content/mu-plugins/」以下にアップロードすればネットワーク管理者のサイト一覧画面にblogIDのカラムが追加されます。(mu-pluginsディレクトリが無い場合は追加してください。)

超個人的な備忘録:Html KickStartをWordPressテーマに組み込みtheme my loginを有効にするとIEではエラーメッセージが表示されない

【原因】

kickstart.js に組み込まれている 「Placeholder plugin for jQuery」が原因っぽい。118行目付近の以下のjQueryを無効化すると正常になる。

//$('input, textarea').placeholder();

【追記:2012/02/15】

twitterのプロフィールウィジェットを組み込むとkickstart.jsの以下のコードが引っかかってページ自体が表示されなくなる。(バージョン0.91beta)

$('[class*=col_]').addClass('column').wrapInner('
');

上記のコードはHtml KickStartのレイアウトシステムの基盤であるため、プレースホルダーのように無効化することは困難。レイアウト外に書き込めばtwitterのウィジェットは正常に動作するが、レイアウトの修正が非常に面倒。

そのため、twitterのプロフィールウィジェットのみを表示するhtmlファイルを用意してiframeで読み込む事で対処した。

JVNのWordPress3.3以下のバージョンに関する脆弱性報告についてのメモ

久しぶりにhetemlの管理画面にアクセスしたら、昨年の12月27日付けで「WordPressをご利用のお客様へ」というトピックが掲載されており、内容を確認するとどうやらWordPress3.3より前のバージョンだと非常にクリティカルな脆弱性が存在するとのこと。

 

年末のゴタゴタに巻き込まれて見落としていたのかと思ったが、WordPressの公式ブログには同様の報告はあがっていないし、そもそもhetemlに掲載されていた情報の元であるJVNこの報告この報告がいつの段階での脆弱性報告なのかいまいち良く分からないため、検索を進めたところWordPress 日本語版作成チームのGoogleグループでJVNの報告に関する議論を発見↓

 

IPA の連絡不能開発者一覧に WordPress

 

以下はマクラケン直子さんの記述を引用。

■ 経緯について 
tenpura さんにチェックをして頂きましたが、一件は4年前にすでに修正されているバグ、もう一件は過去のデフォルトテーマのバグ(こちらも修正済み、現在のテーマには無いバグ)で、2008年くらいから何度も本家にメールを送り続けていたようです。
Ryan、Otto からはこちらから secur...@wordpress.org へメールしたらすぐに(半日以内)返事が来ました。 
すでに修正されているバグや実際のセキュリティ脅威とはいえない報告については返事しないポリシーとのことでした。相当な量のレポートやスパムも届いているはずなので、これは仕方ないかと思います。 
3.3.1 の件でもみなさんお分かりだと思いますが、本当にバグがあった際にはたいてい数時間以内に動きがあります。
JVN ではソースコードを追わず、日本語版チームに連絡することもなく、また上記 URL の記載内容についても「WordPress バージョン 3.3 より前のバージョン」という表記は誤解を呼ぶので正しく書いて 
欲しいとお願いしたのですができないとのことでした。

とりあえず最新のバージョン使っておけということなのでしょうが誤解しまくったので「WordPress バージョン 3.3 より前のバージョン」という表記は止めて欲しいものですね!

【WordPress】メールアドレスからユーザーIDを取得する

業務で会員向けサイトを作っているのですが、ユーザーのメールアドレスからユーザーIDを取得したくなりました。

なんか上手い方法は無いものかと検索をかけてみたところ、get_user_id_from_stringという関数が引っかかりました。
参考:get_user_id_from_string()

(さらに…)

WordPressの外部リンクにクッションページを挟むプラグイン

「jump.php」などでおなじみですが、外部のサイトに遷移する前に「外部サイトに移動します」とか画面に表示されるムカつくアレです。
参考:http://www.hs-sec.co.jp/bluesky_net/pagejump_minkai.htm

神ならぬ身の知る由もない何らかの理由や、あるいはクライアントの希望により「どうしてもクッションページが必要なんだ!無理だと言うなら死ぬ!!」と言われてもWordPressなら大丈夫。以下のWordPressプラグインを使えば特にコードを修正することなく全ての外部リンクにクッションページを挟むことができます。
※ただし、テンプレートに直接書き込んだ外部リンクは無理。

WP No External Links

(さらに…)

【PHP】WADAXの共用サーバでIMAP関数を使ってメールボックスに接続する

結論から言うとWADAXでは接続サーバの指定をホスト名ではなくIPアドレスにしないと上手くいきません。

WADAX共用サーバのIPアドレス一覧はコチラ

(さらに…)

【WordPress】カスタム投稿タイプの表示数を取得する

カスタム投稿タイプで記事の一覧ページを作ってたのですが、とある事情から表示される記事の最大数が必要になったため、WP_Queryのリファレンスを参照したところ以下のプロパティで得られることが分かりました。(カスタム投稿タイプに限定した話じゃありませんが)

$post_count //表示される投稿の数。

こんな感じで使います。

<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$wp_query = new WP_Query( array( 'post_type' => 'custom_post_type_name', 'posts_per_page' => -1, 'paged' => $paged ) ); ?>

<p>投稿の表示数:<?php echo $wp_query->post_count; ?></p>

<?php while ( $wp_query->have_posts() ) : $wp_query->the_post(); ?>
…
<?php endwhile; ?>

あるいは単純に以下の関数でも取れるらしい。

wp_count_posts('カスタム投稿タイプ');

参考:wp_count_posts

【WordPress】管理者以外のユーザーが管理画面にアクセスしたらリダイレクトさせる方法

例えば、WordPressでちょっとした会員向けサイトなんかを作ったとして、とりあえずメンバーにログインだけはしてもらいたいけど管理画面(wp-admin以下)はアクセスしてほしくないよーという場合、以下のコードを「functions.php」に突っ込んでおけば管理者以外のユーザーが管理画面アクセスしたとき、トップページなどにリダイレクトさせることができます。

add_action( 'admin_init', 'disable_admin_pages' );
function disable_admin_pages() {
	if(!current_user_can('administrator')){
		$redirect_url = get_option('home');
		header("Location: ".$redirect_url);
		exit;
	}
}

アクションフックを使うといろいろ出来て面白い。

参考:WordPress アクションフック一覧

【WordPress】get_users関数でユーザーの一覧を取得する

追記(2012.11.16):

一年ぶりに必要になったので参照したら、いくらやっても「投稿者」の一覧が取得できない。
で、よく見たら「contributor」=「寄稿者」だという事に気付いたため修正しました。これまでに参照していただいた方にはすみません。

特定の権限を持つユーザーの一覧が表示したくて色々探し回ってたのですがバージョン3.1から関数が追加されていました。

こんな感じで使えば「投稿者」「寄稿者」権限を持つユーザーの一覧が取得できます。

$users = get_users('role=contributor');
foreach ($users as $user) {
	$user_name = $user->user_login;
	$user_id = $user->ID;
	echo $user_name."(ID:".$user_id.")
"; }

会員サイトなんかで使えそう。

参考:Function Reference/get users « WordPress Codex

Pages: Prev 1 2 3 4 5 6 Next
IT起業アカデミア