「Wordpress」タグアーカイブ
4.7 “ヴォーン” を入れたら・・・
WordPress 4.7 “ヴォーン” にアップデートしたら
head-cleaner プラグインでワーニングが出るようになってしまった。
更に、いくつか持っているサイトの中には管理画面にログインできないものも・・・(泣)
管理画面に入れるものはプラグインから head-cleaner をアンインストール。
管理画面にも入れない場合は、ftp で接続して plugins ディレクトリ内の head-cleaner ディレクトリごと削除する。
とりあえず持ってる WordPress 環境は対処済み。
WordMove!!!
いくつか WordPress サイトを持っているけれど、その一つが急激に容量が増えていて
いっぱいになる前に何とかしなきゃと思って “WordPress 同期” で調べたら
『WordMove』 というのが見つかった。
Ruby で動いているが、本番とステージング環境の同期とかができるらしい。
いいねぇ 🙂
ここも重要な備忘録満載なのでクラッシュすると怖い。
定期的にDBのバックアップは取っているけど、
できればミラーリング環境を用意したい。
こんな時どうしたらいいかわからないの。
そんな時に WordMove を使えば良いと思うよ。
まあ、まだ使ってはいないんですけどね(笑)
忘れないように取り急ぎ、記事にしておきます。 😉
Raspberry Pi に php7 を入れる
先ずインストールされている一覧を表示
$ dpkg -l
1 2 3 4 5 6 7 8 9 10 11 12 |
ii php-apc 4.0.7-1 all APC User Cache for PHP 5 (transit ii php-gettext 1.0.11-1 all read gettext MO files directly, w ii php-tcpdf 6.0.093+dfsg all PHP class for generating PDF file ii php5 5.6.24+dfsg- all server-side, HTML-embedded script ii php5-apcu 4.0.7-1 armhf APC User Cache for PHP 5 ii php5-cli 5.6.24+dfsg- armhf command-line interpreter for the ii php5-common 5.6.24+dfsg- armhf Common files for packages built f ii php5-gd 5.6.24+dfsg- armhf GD module for php5 ii php5-json 1.3.6-1 armhf JSON module for php5 ii php5-mcrypt 5.6.24+dfsg- armhf MCrypt module for php5 ii php5-mysql 5.6.24+dfsg- armhf MySQL module for php5 ii php5-readline 5.6.24+dfsg- armhf Readline module for php5 |
php5 関連を削除
$ apt-get remove php5*
1 2 |
以下のパッケージは「削除」されます: libapache2-mod-php5 php-apc php-gettext php-tcpdf php5 php5-apcu php5-cli php5-common php5-gd php5-json php5-mcrypt php5-mysql php5-readline phpmyadmin |
先頭に rc とついていれば削除されている。
1 2 3 4 5 6 7 8 |
rc php5-apcu 4.0.7-1 armhf APC User Cache for PHP 5 rc php5-cli 5.6.24+dfsg-0+deb8u1 armhf command-line interpreter for the php5 scripting language rc php5-common 5.6.24+dfsg-0+deb8u1 armhf Common files for packages built from the php5 source rc php5-gd 5.6.24+dfsg-0+deb8u1 armhf GD module for php5 rc php5-json 1.3.6-1 armhf JSON module for php5 rc php5-mcrypt 5.6.24+dfsg-0+deb8u1 armhf MCrypt module for php5 rc php5-mysql 5.6.24+dfsg-0+deb8u1 armhf MySQL module for php5 rc php5-readline 5.6.24+dfsg-0+deb8u1 armhf Readline module for php5 |
php7.0 のリポジトリを登録
1 2 3 4 5 6 7 |
$ sudo vi /etc/apt/sources.list ファイルの最後に以下の行を追加 deb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free $ sudo gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851 $ sudo gpg --armor --export CCD91D6111A06851 | sudo apt-key add - $ sudo apt-get update |
apt-get install php7.0 php7.0-mysql php7.0-gd php7.0-mbstring php7.0-curl php7.0-xml php7.0-xmlrpc
apt-get install php php-mysql php-gd php-mbstring php-curl php-xml php-xmlrpc (自動的に php7.0 系がインストールされる)
でインストール
なんか立ち上げなおしたら「お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。」とか出た。
apache を入れ直したりガチャガチャやっていたのだが、apache のログを見たら Exec-php が悪さをしていた。
php7.0 用のパッチを宛てたら立ち上がった。
うん。前より早くなってるね。DBアクセスは相変わらずだけど。
参考:install-php-7-on-raspbian-raspberry-pi
PHPのバージョンを7に上げてみた
PHP7 は PHP5系に比べてパフォーマンスが約2倍に改善されているらしい。
このホームページスペースはPHPのバージョンが切り替えられるので
PHP7 に上げて動作確認してみた。
WordPress もプラグインもほぼ問題なく動いてイルっぽい。
多少スピードアップもした感じ。
ただし、Exec-PHP だけはそのままでは動かない。
Parse error: syntax error, unexpected ‘new’ (T_NEW) in wp-content/plugins/exec-php/exec-php.php on line 22
とか出るので
$GLOBALS[‘g_execphp_manager’] =& new ExecPhp_Manager();
↓
$GLOBALS[‘g_execphp_manager’] = new ExecPhp_Manager();
の様に修正する。同様に、
wp-content/plugins/exec-php/includes/ にある manager.php、admin.php、cache.php、ajax.php 内に記述されている
=& も = に置換すると動くようになる。
これは phpversion() の結果 → 7.0.16
まあ Exec-PHP は使うなってことだね。便利なんだけどな。
2重投稿を削除する
RSSから読み込んだ内容を投稿として保存するサイトを作ったのだが更新日時の関係なのか、同じものが複数投稿される現象が発生。
手動で消すのも何なので、同じタイトルの投稿が複数あったら自動的に削除するようにしてみた。
先ずどこで動かすかということで、テーマに含まれる functions.php で action を追加。
実際のアクションの内容は、同じタイトルをグループ化して最小のIDを持つレコード以外を削除する感じ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function duplecate_delete() { global $wpdb; $wpdb->query( "DELETE FROM {$wpdb->prefix}posts WHERE {$wpdb->prefix}posts.ID NOT IN ( SELECT min_id FROM ( SELECT MIN(t1.ID) AS min_id FROM {$wpdb->prefix}posts AS t1 WHERE t1.post_type = 'post' GROUP BY t1.post_title ) AS t2 ) AND {$wpdb->prefix}posts.post_type = 'post'"); } add_action('init', 'duplecate_delete', 1); |
テーマを更新すると functions.php も初期化される場合もあるので備忘録として残しておこう。
固定ページに投稿一覧を表示する
方法は2つ
1、以下のコードを記述したテンプレートを用意して投稿一覧を表示したいページのテンプレートとして設定する。
2、または Exec-PHP など、PHP コードが書けるプラグインを使って固定ページに直接記述する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<?php $paged = (int) get_query_var('paged'); $args = array( 'posts_per_page' => 10, 'paged' => $paged, 'orderby' => 'post_date', 'order' => 'DESC', 'post_type' => 'post', 'post_status' => 'publish' ); $the_query = new WP_Query($args); if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?> <div class="post"> <h1 class="title"><?php the_title(); ?></h1> <?php the_content(); ?> </div> <?php endwhile; endif; // ページネータ if ($the_query->max_num_pages > 1) { echo paginate_links(array( 'base' => get_pagenum_link(1) . '%_%', 'format' => 'page/%#%/', 'current' => max(1, $paged), 'total' => $the_query->max_num_pages )); } wp_reset_postdata(); ?> |
ちなみに、投稿へのリンクは p=投稿ID を指定する。
1 |
<a href="/index.php?p=123">投稿のタイトル</a> |
the_content の代わりに the_excerpt を使うと抜粋(55単語で切れて最後に […]) が表示される。