「オープンソース」カテゴリーアーカイブ
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単語で切れて最後に […]) が表示される。
ACFの入力欄が全てに表示されてしまう。
プラグイン内で add_action(‘init’ … ) にフックすると function.php に記述したのと同等になるので、
Advanced Custom Fields でエクスポートした php コードを追記したところ
管理画面の全ての入力画面に、追加したカスタムフィールドの入力欄が表示されるようになってしまった。
しかも、ローディングアイコンのまま、入力欄は表示されない。
原因は
1 2 3 4 5 6 7 |
if(function_exists("register_field_group")) { register_field_group(array ( 'id' => 'acf_%e5%95%86%e5%93%81', 'title' => 'タイトル', 'fields' => array ( : |
と、ID が化けていたため。ここを
1 |
'id' => 'acf_additional-custom-fields', |
の様に書き換えてやれば正しく表示されるようになった。
そんなのわからんわ(笑)
osclass の無料テーマとプラグイン
osclass の管理画面からプラグインやテーマを見ると有料のものしか出てこないので、無料がないと思っていたら、ありました。
Osclass – Market で根気よくページを進めていくと Free と表示されている無料のテーマやプラグインが見つかります。
Bootstrap ベースのレスポンシブ無料テーマもありました。
でもまあそのままだと日本語化されていなかったりするので、言語ファイルを翻訳する必要はありそう。
osclass の広告管理画面でエラー
Warning: sprintf() [function.sprintf]: Too few arguments in xxxxxxxxxxxx/oc-admin/items.php on line 822
Warning: sprintf() [function.sprintf]: Too few arguments in xxxxxxxxxxxx/oc-admin/items.php on line 823
Warning: sprintf() [function.sprintf]: Too few arguments in xxxxxxxxxxxx/oc-admin/items.php on line 824
Warning: sprintf() [function.sprintf]: Too few arguments in xxxxxxxxxxxx/oc-admin/items.php on line 825
Warning: sprintf() [function.sprintf]: Too few arguments in xxxxxxxxxxxx/oc-admin/items.php on line 826
Warning: sprintf() [function.sprintf]: Too few arguments in xxxxxxxxxxxx/oc-admin/items.php on line 827
Warning: sprintf() [function.sprintf]: Too few arguments in xxxxxxxxxxxx/oc-admin/items.php on line 828
Warning: sprintf() [function.sprintf]: Too few arguments in xxxxxxxxxxxx/oc-admin/items.php on line 829
Warning: sprintf() [function.sprintf]: Too few arguments in xxxxxxxxxxxx/oc-admin/items.php on line 830
調べたらそのものずばりの記事が見つかった。
Osclass・エラーの修正(OsclassWizards)
items.php の指定行の %s → %%s に変更する。
無事、直りました。