[CSS小ネタ] どうしても本文に游ゴシックを使いたい時のCSS指定

参考サイト

以外と厄介なんですね…

妥協案

@font-face {
  font-family: "Yu Gothic";
  src: local("Yu Gothic Medium"),local("Yu Gothic");
  font-weight: 500;
}
@font-face {
  font-family: "Yu Gothic";
  src: local("Yu Gothic Bold"),local("Yu Gothic");
  font-weight: bold;
}
body {
	font-family: "Yu Gothic", YuGothic, sans-serif;
}

たまにこんな塩梅で使っています。

body {
	font-family: "Yu Gothic", YuGothic, "Lucida Grande", "Hiragino Kaku Gothic ProN", "ヒラギノ角ゴ Pro W3", "メイリオ", Meiryo, Osaka, Verdana, sans-serif;
	font-feature-settings: 'pkna';
	letter-spacing: 0.5px;
}

比較画像を作ってみました。

游ゴシックは16px未満だと本文書体としては厳しそう。


2017

「酉」 謹賀新年 旧年中はひとかたならぬご厚情を賜り誠にありがとうございました。本年も何卒よろしくお願い申し上げます。

明代の文人、文徴明氏の「酉」をお手本にしました。


[WordPress小ネタ] 漏れ串からのコメント投稿を一旦承認待ちにする機能

一律に拒否してしまうと会社等のプロキシからも書き込めなくなってしまうので、一旦承認待ちとなるようにしています。
先にAkismet等がspamとしたものは尊重するようにし、そうならなかったコメントを判定対象とします。
プロキシ特有の環境変数は HTTP_X_FORWARDED_FOR や HTTP_VIA を見れば良いっぽいですが、必要に応じて足してみてください。

※textbox.jpでは使っていません。

テーマの functions.php に追記する内容

add_action( 'comment_post', 'proxy_comment_unapproved', 15, 1 );
function proxy_comment_unapproved( $comment_ID ) {
	if ( !empty($_SERVER['HTTP_X_FORWARDED_FOR']) || !empty($_SERVER['HTTP_VIA']) ) {
		$comment = get_comment( $comment_ID );
		$comment_arr = array();
		$comment_arr['comment_ID'] = $comment_ID;
		if ( $comment->comment_approved !== 'spam' ) {
			$comment_arr['comment_approved'] = 0;
		}
		wp_update_comment( $comment_arr );
	}
}

参考:Function Reference/wp update comment

もうちょっと頑張るならば、例えばTorの出口ノードリストを定期的に取得して保存しておき、投稿者のIPアドレスがそれに含まれるか判定する条件分岐を追加しても良いかもしれません。


[WordPress小ネタ] ソーシャルボタンのリンクURL生成でよく使うネタ

使う頻度がわりとあるのでメモとして。

global $post;
$url = get_permalink($post->ID);
$enc_url = urlencode($url);
$title = get_the_title($post->ID) . ' | (短めのサイト名)';
$enc_title = rawurlencode($title);

$link_twitter  = 'http://twitter.com/intent/tweet?text='.$enc_title.'&url='.$enc_url;
$link_facebook = 'http://www.facebook.com/sharer.php?u='.$enc_url;
$link_hatena   = 'http://b.hatena.ne.jp/entry/'.$enc_url;
$link_line     = 'http://line.me/R/msg/text/?'.$enc_title.'%20'.$enc_url;

[WordPress小ネタ]時限公開リンクのショートコード

指定期間を過ぎたらリンクタグのみ除外したい、という要望があったので作ってみた小ネタ。
キャッシュプラグインやnginxでページキャッシュを有効にしている場合は、取下げ時刻にキャッシュクリアする必要があるのでご注意ください。

■使用例

*中のテキストもまるごと取り下げたい
[limit_link href="http://www.google.com" end="2016-03-05 01:51:00"]サンプルテキスト[/limit_text]

*リンクだけ取り下げたい+別ウィンドウで開く
[limit_link href="http://www.google.com" end="2016-03-05 01:51:00" target="_blank" text="show"]サンプルテキスト[/limit_link]

function custom_shortcode_limit_link( $atts, $content = null ) {
	extract( shortcode_atts( array(
		'href'   => 'http://example.com/',
		'target' => '_self', 
		'end' => '2015-12-31 23:59:59',
		'text' => 'hide'
	), $atts ) );
	
	$now = date_i18n('U'); // 現在の時刻
	$expire_date = date('U',strtotime($end)); // 取り下げ時刻
	
	if($expire_date >= $now) {
		// リンク掲出期間中
		return '<a href="' . esc_html($href) . '" target="' . esc_html($target) . '">' . esc_html($content) . '</a>';
	} elseif ($text === 'show') {
		// 掲出終了後、テキストは表示する場合
		return esc_html($content);
	} else {
		// 掲出終了後、丸ごと消す場合
		return;
	}

}
add_shortcode('limit_link', 'custom_shortcode_limit_link');

[WordPress小ネタ] メディアファイルのアップロード時に自動付与されるタイトル・キャプションを空欄で登録する機能

function media_upload_default( $post_ID ) {
    $args = array( 
                    'ID'           => $post_ID, 
                    'post_title'   => '', 
                    'post_excerpt' => '', 
                    'post_content' => '', 
            );

    wp_update_post( $args );

}
add_action( 'add_attachment', 'media_upload_default' );

下記サイトを参考にしました。

How can I add a default description to uploaded files?
http://wordpress.stackexchange.com/questions/121709/how-can-i-add-a-default-description-to-uploaded-files


2016

2016

本年もどうぞよろしくお願い申し上げます。


MovableType形式のエクスポートファイルをWordPressへ正常にインポートできない事象のひとつの原因、その対策

ライブドアブログからWordPressへ記事を移行するお仕事があり、MT形式のエクスポートファイルをインポートすると、管理画面上では問題なく完了したように見えて実は複数の記事が登録されていなかった事があったので、その原因と対策をメモします。

困ったこと

ライブドアブログやTypePadなど、MovableType形式のブログから書き出した記事をWordPressへインポートすると、件数が多くても少なくても、エラー表示が無いまま完了画面が表示されるものの、特定の記事の取込みが必ず失敗する。
インポートに使用するプラグインは「Movable Type and TypePad Importer

原因

プラグイン側の設定により、1行あたりの容量が8192(-1)バイトに制限されているため、記事内の長大な行を正常に処理できない

/wp-content/plugins/movabletype-importer/movabletype-importer.php
102〜106行目

function fgets($fp, $len=8192) {
	if ( $this->has_gzip() )
		return gzgets($fp, $len);
	return fgets($fp, $len);
}

対策

  • エクスポートファイルに、改行タグなどの位置で適度な改行を加える
  • $len=8192 の数値を適度に大きくするか、またはlengthを指定しない

Twitterの投票機能付き投稿をAPIで取得してみた

そういえば@TwitterJPの最初の投票機能付き投稿API越しではどう見えるか気になったので、取得してみました。
結果、投票があったかどうかすら分からない…

Twitterとしてはサイトか公式クライアント使ってほしいだろうし、APIでは提供しないのかな。

stdClass Object
(
    [created_at] => Thu Oct 22 07:49:56 +0000 2015
    [id] => 657101565237432320
    [id_str] => 657101565237432320
     => みなさんのアカウントには新しい投票機能が入りましたでしょうか?まだの方は、数日中に追加されるはずですので、もう少々お待ちください。
投票機能はこんな風にご利用いただけます。

好きなのは…
     => <a href="http://twitter.com" rel="nofollow">Twitter Web Client</a>
    [truncated] => 
    [in_reply_to_status_id] => 
    [in_reply_to_status_id_str] => 
    [in_reply_to_user_id] => 
    [in_reply_to_user_id_str] => 
    [in_reply_to_screen_name] => 
    [user] => stdClass Object
        (
            [id] => 7080152
            [id_str] => 7080152
            [name] => TwitterJP
            [screen_name] => TwitterJP
            [location] => 東京都中央区
            [description] => 日本語版Twitter公式アカウントです。
            [url] => https://t.co/A9dNuL0CCa
            [entities] => stdClass Object
                (
                    [url] => stdClass Object
                        (
                            [urls] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [url] => https://t.co/A9dNuL0CCa
                                            [expanded_url] => http://blog.jp.twitter.com
                                            [display_url] => blog.jp.twitter.com
                                            [indices] => Array
                                                (
                                                    [0] => 0
                                                    [1] => 23
                                                )

                                        )

                                )

                        )

                    [description] => stdClass Object
                        (
                            [urls] => Array
                                (
                                )

                        )

                )

            [protected] => 
            [followers_count] => 1972807
            [friends_count] => 70
            [listed_count] => 16500
            [created_at] => Tue Jun 26 01:54:35 +0000 2007
            [favourites_count] => 59
            [utc_offset] => 32400
            [time_zone] => Tokyo
            [geo_enabled] => 
            [verified] => 1
            [statuses_count] => 3346
            [lang] => ja
            [contributors_enabled] => 
            [is_translator] => 
            [is_translation_enabled] => 
            [profile_background_color] => C0DEED
            [profile_background_image_url] => http://pbs.twimg.com/profile_background_images/567482719571959809/WwgdnJCP.jpeg
            [profile_background_image_url_https] => https://pbs.twimg.com/profile_background_images/567482719571959809/WwgdnJCP.jpeg
            [profile_background_tile] => 1
            [profile_image_url] => http://pbs.twimg.com/profile_images/3407356865/62f0d53222361fbd2c1fe9889f4cc559_normal.png
            [profile_image_url_https] => https://pbs.twimg.com/profile_images/3407356865/62f0d53222361fbd2c1fe9889f4cc559_normal.png
            [profile_banner_url] => https://pbs.twimg.com/profile_banners/7080152/1445475230
            [profile_link_color] => 0084B4
            [profile_sidebar_border_color] => FFFFFF
            [profile_sidebar_fill_color] => DDEEF6
            [profile_text_color] => 333333
            [profile_use_background_image] => 1
            [has_extended_profile] => 1
            [default_profile] => 
            [default_profile_image] => 
            [following] => 
            [follow_request_sent] => 
            [notifications] => 
        )

    [geo] => 
    [coordinates] => 
    [place] => 
    [contributors] => 
    [is_quote_status] => 
    [retweet_count] => 8507
    [favorite_count] => 2675
    [entities] => stdClass Object
        (
            [hashtags] => Array
                (
                )

            [symbols] => Array
                (
                )

            [user_mentions] => Array
                (
                )

            [urls] => Array
                (
                )

        )

    [favorited] => 
    [retweeted] => 
    [lang] => ja
)

El Capitanでbrew updateする

El Capitanにアップグレードしたら、Homebrewのアップデートがエラーでつまずくようになったので、解消した際のメモ。

$ sudo chown $(whoami):admin /usr/local
$ sudo chown -R $(whoami):admin /usr/local

via: HomebrewはEl Capitanへアップグレードする前に入れておく : El Capitanをクリーンインストールせざるを得ない場合

$ cd $(brew --prefix)
$ git fetch origin
$ git reset --hard origin/master

via: ヾ(o゚ω゚o)ノ゙brew updateでエラーでたった[Homebrew] : brew updateできるようにした

$ brew update
Already up-to-date.

できたー