マリーンズに関する記事の一部を別のブログに移行

このブログは特にテーマを決めずに「ゆるく」書いています。
しかし千葉ロッテマリーンズに関する記事はゆるすぎるので最近はクライマックスシリーズ、日本シリーズや日本記録などが出た場合に限って書くようにしています。
過去にはマリーンズのシーズン中の通常の試合について書いた記事があり、これらはさらにゆるすぎるので削除することにしました。
ただ削除するのはもったいないので別のブログに移行しました。 (さらに…)

WordPressのタグを一括して統合する

WordPressのタグの管理は複雑です。今回はタグの統合で困りました。
タグが次のように付けられているとします。 (さらに…)

WordPressのテーマをBootstrapで作る

このブログはWordpressを使っています。携帯電話用の表示にはプラグインで対応していましたが、動きが今一つなので、テーマを自作することにしました。
やはりBootstrapを使います。はっきり言ってモバイルフレンドリーにする方法をこれしか知りません。 (さらに…)

WordPressでアップロードできるファイルタイプを増やす

SVGファイルは拡張子が「svg」ですが、WordPressでは「メディアを追加」を使ってアップロードすることができませんでした。
次のメッセージが出ます。

このファイルタイプはセキュリティの観点から許可されていません。

また先日はVBAのファイル「bas」がやはりダメでした。
WordPressではあらかじめ決まったファイルタイプしかアップロードできません。
このファイルタイプを追加する方法です。

使っているテーマに「functions.php」というファイルがあると思います。
ここに次のようなコードを追加します。

add_filter('upload_mimes', 'allow_upload_other');
function allow_upload_other($mimes){
    $mimes['svg'] = 'image/svg+xml';
    $mimes['bas'] = 'text/plain';
    return $mimes;
}

「allow_upload_other」という関数を書きます。ここに拡張子とmimeタイプを列挙しておきます。
これを「upload_mimes」というフィルターで実行します。

WassUpとSuperCacheは同時に使えない

WordPressで「WassUp Real Time Analytics」を使っています。記事別のアクセス数などをリアルタイムに調べることができるプラグインです。
しかし、記事の表示を高速化する「WP Super Cache」を導入したところ「WassUp」が正しく表示されなくなりました。アクセス数が異常に少ないのです。

調べると「WassUp」のFAQに書かれていました。

WordPress › WassUp Real Time Analytics « WordPress Plugins

After installing WP Supercache (or other caching plugin), Wassup shows very few visits, why is that?
WassUp is incompatible with WP Supercache, WP Cache, Hyper Cache, or any page-based caching plugin. WassUp cannot generate accurate statistics with these plugins.

現象は全く同じです。そして「WassUpは、WP Super Cacheとincompatibleである」と書かれています。相性が悪いそうです。

テーマを修正してWordPressでダブルクォートが変換されるのを防ぐ

WordPressで半角ダブルクォーテーションを使うと、自動的に「“テスト”」のように全角に変換します。
変換は「formatting.php」というファイルで行われているので、その部分をコメントアウトする方法を以前、紹介しました。
これだとWordPressをアップデートすると元に戻ってしまいます。今回はテーマファイルを修正する方法を紹介します。

実際に使っているテーマのフォルダの中に「functions.php」というファイルがあります。ここに次の3行を追記します。

remove_filter('the_content', 'wptexturize');
remove_filter('the_excerpt', 'wptexturize');
remove_filter('the_title', 'wptexturize');

これでタイトル、本文、概要において変換を防ぐことができます。
もちろんテーマを変えると元に戻りますので注意してください。

投稿からの経過日数を表示するWordPressプラグイン

ブログ記事に投稿してからの経過時間、日数を表示するプラグインを自作しました。
「この記事は投稿から3日が経過しています。」というように表示します。
この「3日」の部分が変化しますが、これはWordPressの関数「human_time_diff」を使っています。 (さらに…)

WordPressプラグイン「Add Noindex」

WordPressには個別投稿ページの他に、カテゴリーページ、タグページ、日付別ページなどのアーカイブページがあります。
例えば「プラグインを自作」という記事を投稿すると、「WordPress」のカテゴリーページ、「プラグイン」のタグページなど、各ページの先頭に同じ記事が載ります。
Googleは、ウェブサイトに同じ内容を何度も表示すると「コピーばかりで低品質」と判定するそうです。
一方で「<meta name='robots' content='noindex'>」をHTMLのヘッダに書いておけばGoogleはクロール対象から除外するので、そもそも「品質」の判定をしません。
そこで、個別登録ページはクロール対象とし、アーカイブページはクロール対象から除外するためのプラグインを書いてみました。 (さらに…)

WordPressプラグインのテンプレート

WordPressのプラグインを作ろうと色々調べています。
ショートコードを使う方法が簡単ですね。
ショートコードを使ってプラグインを作るときのテンプレートを作ってみました。

<?php
/*
Plugin Name: プラグインテンプレート
Plugin URI: http://stabucky.com/
Description: ショートコードを使うプラグインを作るためのテンプレート。設定で、firstwordを「い」、lastwordを「は」とし、編集で「[myplugin myword="ろ"]」というショートコードを書くと、「いろは」と表示される。
Author: stabucky
Version: 0.01
Author URI: http://stabucky.com/
*/

add_shortcode('myplugin','myplugin_filter');
add_action('admin_menu','myplugin2');
function myplugin2(){
    add_options_page('設定', 'プラグインテンプレート', 8, __FILE__, 'myplugin3');
}
function myplugin3(){
?>
<div class="wrap">
<h2>プラグインテンプレート</h2>
<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>
<table>
<tr valign="top">
<th scope="row">firstword</th>
<td><input type="text" name="firstword" value="<?php echo get_option('firstword'); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">lastword</th>
<td><input type="text" name="lastword" value="<?php echo get_option('lastword'); ?>" /></td>
</tr>
</table>
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="firstword,lastword" />
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>
</form>
</div>
<?php
}
function myplugin_filter($atts) {
    if(!get_option('firstword')){
        $firstword='';
    }else{
        $firstword=get_option('firstword');
    }
    if(!get_option('lastword')){
        $lastword='';
    }else{
        $lastword=get_option('lastword');
    }
    extract(shortcode_atts(array(
        'myword'=>''
    ),$atts));
    return $firstword.$myword.$lastword;
}
?>

これをテキストエディタに貼り付けて、拡張子「.php」を付けてWordPressのプラグインのフォルダに保存します。アクティベートするとすぐに使えます。
このプラグイン自体は大した意味がありませんが、逆に余計なことがほとんど書かれていないので改造は容易だと思います。

一応、このプラグインの説明を書いておきます。
本文に「[myplugin myword=文字列]」のように書いておくと設定であらかじめ指定しておいた文字列でmywordに指定した文字列をはさみます。
例えば、設定で、firstwordを「い」、lastwordを「は」としておきます。
編集で「[myplugin myword="ろ"]」というショートコードを書いて、公開すると「いろは」と表示されます。

myplugin_filterを適当に書き直せばお好みのプラグインを作ることができます。

プラグインの有効化で出るエラー

WordPressのプラグインを自作して有効化しようとしたところ、次のようなエラーが出ました。

このプラグインを有効化する際に、xxx文字分の予期しない出力が生成されました。もし “headers already sent” エラーメッセージ、配信フィードの問題などが発生する場合は、プラグインを無効化または削除してください。

英語だと次の通り。

The plugin generated xxx characters of unexpected output during activation. If you notice “headers already sent” messages, problems with syndication feeds or other issues, try deactivating or removing this plugin.

PHPは「<?php」と「?>」の間にコードを書きます。
通常は、この前後に文字列を入力してもよいのですが、プラグインの場合はダメです。
つまり「<?php」の前または「?>」の後に文字列を入力してはいけません。
半角スペースも改行もダメのようです。

私の場合は、「?>」の後に半角スペースがありました。これを削除したところ、正しく有効化することができました。

古い記事

タグ

カテゴリー

最近の投稿

最近のコメント

固定ページ

アーカイブ

stabucky

写真

メタ情報