nyanco! ブログ

nyanco! ブログ

ほぼ日刊ペースで、主にIT・PCネタ・便利グッズ・猫などについてお役立ちの精神で書き連ねていく雑記ブログです。

nyanco! ブログは下記URLに移転いたしました。

https://blog.nyanco.me/

約 5 秒後に自動的にリダイレクトします。

【WordPress】カテゴリーで条件分岐させて色々する方法

WordPress特定のカテゴリーのみに特定の要素を表示させたりCSSを読み込ませたりしたいんだけどどうしたら良いかにゃ〜?
にゃんこにも分かるように教えて欲しいにゃ〜

という疑問にお答えします。  

とっちゃん@nyanco! です。 

このところ公私ともにWordPressにどっぷりなとっちゃんです。

できることが増えてくるとどんどん楽しくなってきますね〜!

さて今回は、特定のカテゴリーの記事にだけ特定のhtmlを出力するまたCSSを読み込ませるなど、条件分岐させる技の備忘録です。

WordPressで条件分岐させる方法

早速ですが、カテゴリースラッグが「test」という場合の条件分岐文がこちら。

<?php if( in_category('test') ) : ?>
<!-- カテゴリー「test」のページにのみ適用 -->
  〜htmlを記述
<?php else: ?>
<!-- カテゴリー「test」以外のページに適用 -->
  〜htmlを記述(空白でもOK!)
<?php endif; ?>

例では「test」という「カテゴリースラッグ」ですが、「カテゴリーID」でもOKです!

▼スラッグは「投稿」→「カテゴリー」から確認できます。

「カテゴリーID」は、先程の画面から任意のカテゴリーをクリックし、ページ遷移先URLの中のtag_ID=●●で確認できます。

▼下記だと「カテゴリーID」は「10」となります。

ただの数字の「ID」より、スラッグ名の方が後から見ても分かりやすいので私は「スラッグ」を使用するようにしています。

複数のカテゴリーを指定したい時

複数カテゴリーの指定も簡単です。

<?php if ( in_category(array('test','photo','poem')) ) : ?>
<!-- カテゴリー「test」「photo」「poem」のページにのみ適用 -->
  〜htmlを記述
<?php else: ?>
<!-- カテゴリー「test」「photo」「poem」以外のページに適用 -->
  〜htmlを記述(空白でもOK!)
<?php endif; ?>

1行目に array というのが加わって、その後ろに適用させたいカテゴリーの「スラッグ」を ' 'で挟みながら,で区切って記述するだけです。

※ちなみに、カテゴリーには「親カテゴリー」「小カテゴリー」という概念がありますが、「親カテゴリー」を指定したらその「小カテゴリー」にも適用されるわけではないようです。

カテゴリーごとに条件分岐させたい時

カテゴリーごとに細かく条件分岐させるのも簡単です。

<?php if ( in_category(array('test')) ) : ?>
<!-- カテゴリー「test」のページにのみ適用 -->
  〜htmlを記述
<?php elseif ( in_category(array('photo','poem')) ) : ?> 
<!-- カテゴリー「photo」「poem」のページにのみ適用 -->
  〜htmlを記述
<?php else: ?>
<!-- カテゴリー「test」「photo」「poem」以外のページに適用 -->
  〜htmlを記述(空白でもOK!)
<?php endif; ?>

4行目の elseif(〜) という命令文を追加して条件を増やしているだけです。
この要領でいくらでも条件分岐を増やすこともできます。

javascriptCSS の条件分岐読み込みもできる

先程の例は html の出力でしたが、script や CSS の読み込みも条件分岐できます。

記述の仕方は全く同じです。

<?php if( in_category('test') ) : ?>
<!-- カテゴリー「test」のページにのみ適用 -->
  <link rel="stylesheet" href="〜/test.css" type="text/css" />
<?php else: ?>
<!-- カテゴリー「test」以外のページに適用 -->
  <link rel="stylesheet" href="〜/style.css" type="text/css" />
<?php endif; ?>

上記例だと、カテゴリー「test」ページは「test.cssというCSSが読み込まれ、「test」以外のページは「style.cssが読み込まれるということになります。

カテゴリーで CSS や script が異なっている場合、余計なものを読み込まなくできるので、表示速度アップにつながりそうですね!

※script を記述する場合、script閉じタグ(</script>)までを条件分岐文内に収めるようにしましょう!
この閉じタグ忘れで表示が崩れ、小一時間くらい悩みました… ^^;

phpファイルならどこに記述してもOK

通常なら html出力する記述は bodyタグの中、javascriptCSS の読み込みは headタグの中と決まってますが、phpファイルは、phpタグ(<?php と ?>)で囲まれた箇所を探して実行してくれるので、どこに記述しても大丈夫です。

phpって便利ですねー!! ←まだまだ触りしか分かってない ^^;

おわりに

条件分岐と聞くと小難しそうですが、基本コピーペストするだけだし、仕組みが分かると結構複雑なこともできちゃうので、これはできることの幅がとっても広がりそうです!

本記事がどなたかの参考になれば幸いです。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

【WordPress】管理画面から「functions.php」などを更新できるようにする方法

とっちゃん@nyanco! です。

WordPressのテーマなどが管理画面から更新できない時の対処法の覚書です。

重要なファイルは管理画面で更新ができない安全装置がかかっている

WordPressの管理画面でテーマの「functions.php」を編集して更新しようとすると…

致命的なエラーをチェックするためにサイトと通信できないため、PHP の変更は取り消されました。SFTP を使うなど、他の手段で PHP ファイルの変更をアップロードする必要があります。

致命的なエラーとか言われるとドキッとします。

これ、要はWordPressの安全装置みたいなもので、「functions.php」など下手に触らない方が良いファイルは簡単には編集できなくしている仕様のようです(致命的なエラーにはなりにくいCSSファイルなんかは問題なく更新できました)。

重要なファイルは一度ローカルで編集してその都度FTPソフトでアップロードしてね、ということなんでしょうが、FTPソフト使うのって地味に面倒くさいし、子テーマで作業していればエラーで画面真っ白になっても管理画面にさえ入れるなら復帰も早そうだし…

何より、管理画面のエディターがショートカットキーも使えて結構使いやすいのでなんとか管理画面で編集できないものかなぁと思って調べてると方法がありました!

安全装置の外し方

下記サイト様の記事がズバリな内容でした。

qiita.com

やり方紹介の前に注意点

こちらの記事にも書かれてますが、安全装置(ファイルチェック機能)を解除するのでリスクがあるという点と、WordPressがバージョンアップすると元に戻るという点に注意です。

作業する場合、あくまで自己責任でお願いします!特に「functions.php」の編集はバックアップ必須です!

ちなみにこの安全装置はWordPressバージョン4.9からの仕様のようですね。

やり方

  1. wp-admin > includes フォルダの中にある「file.phpphpが編集できるテキストエディタで開く。

  2. 下記の494~602行(行数はWordPressのバージョンで微妙に異なります)をコメントアウトする(/**/で囲む)。

/*
   if ( $is_active && 'php' === $extension ) {
       $scrape_key   = md5( rand() );
       $transient    = 'scrape_key_' . $scrape_key;
       $scrape_nonce = strval( rand() );
       set_transient( $transient, $scrape_nonce, 60 ); // It shouldn't take more than 60 seconds to make the two loopback requests.

       $cookies       = wp_unslash( $_COOKIE );
       $scrape_params = array(
           'wp_scrape_key'   => $scrape_key,
           'wp_scrape_nonce' => $scrape_nonce,
       );
       $headers       = array(
           'Cache-Control' => 'no-cache',
       );

       // Include Basic auth in loopback requests.
       if ( isset( $_SERVER['PHP_AUTH_USER'] ) && isset( $_SERVER['PHP_AUTH_PW'] ) ) {
           $headers['Authorization'] = 'Basic ' . base64_encode( wp_unslash( $_SERVER['PHP_AUTH_USER'] ) . ':' . wp_unslash( $_SERVER['PHP_AUTH_PW'] ) );
       }

       // Make sure PHP process doesn't die before loopback requests complete.
       @set_time_limit( 300 );

       // Time to wait for loopback requests to finish.
       $timeout = 100;

       $needle_start = "###### wp_scraping_result_start:$scrape_key ######";
       $needle_end   = "###### wp_scraping_result_end:$scrape_key ######";

       // Attempt loopback request to editor to see if user just whitescreened themselves.
       if ( $plugin ) {
           $url = add_query_arg( compact( 'plugin', 'file' ), admin_url( 'plugin-editor.php' ) );
       } elseif ( isset( $stylesheet ) ) {
           $url = add_query_arg(
               array(
                   'theme' => $stylesheet,
                   'file'  => $file,
               ),
               admin_url( 'theme-editor.php' )
           );
       } else {
           $url = admin_url();
       }
       $url                    = add_query_arg( $scrape_params, $url );
       $r                      = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout' ) );
       $body                   = wp_remote_retrieve_body( $r );
       $scrape_result_position = strpos( $body, $needle_start );

       $loopback_request_failure = array(
           'code'    => 'loopback_request_failed',
           'message' => __( 'Unable to communicate back with site to check for fatal errors, so the PHP change was reverted. You will need to upload your PHP file change by some other means, such as by using SFTP.' ),
       );
       $json_parse_failure       = array(
           'code' => 'json_parse_error',
       );

       $result = null;
       if ( false === $scrape_result_position ) {
           $result = $loopback_request_failure;
       } else {
           $error_output = substr( $body, $scrape_result_position + strlen( $needle_start ) );
           $error_output = substr( $error_output, 0, strpos( $error_output, $needle_end ) );
           $result       = json_decode( trim( $error_output ), true );
           if ( empty( $result ) ) {
               $result = $json_parse_failure;
           }
       }

       // Try making request to homepage as well to see if visitors have been whitescreened.
       if ( true === $result ) {
           $url                    = home_url( '/' );
           $url                    = add_query_arg( $scrape_params, $url );
           $r                      = wp_remote_get( $url, compact( 'cookies', 'headers', 'timeout' ) );
           $body                   = wp_remote_retrieve_body( $r );
           $scrape_result_position = strpos( $body, $needle_start );

           if ( false === $scrape_result_position ) {
               $result = $loopback_request_failure;
           } else {
               $error_output = substr( $body, $scrape_result_position + strlen( $needle_start ) );
               $error_output = substr( $error_output, 0, strpos( $error_output, $needle_end ) );
               $result       = json_decode( trim( $error_output ), true );
               if ( empty( $result ) ) {
                   $result = $json_parse_failure;
               }
           }
       }

       delete_transient( $transient );

       if ( true !== $result ) {

           // Roll-back file change.
           file_put_contents( $real_file, $previous_content );
           if ( function_exists( 'opcache_invalidate' ) ) {
               opcache_invalidate( $real_file, true );
           }

           if ( ! isset( $result['message'] ) ) {
               $message = __( 'Something went wrong.' );
           } else {
               $message = $result['message'];
               unset( $result['message'] );
           }
           return new WP_Error( 'php_error', $message, $result );
       }
   }
*/
  1. 保存した「file.php」をFTPソフトでサーバーに上書きしたらOK!

これで無事に管理画面から「functions.php」が編集・更新できるようになりました。

やはり便利です♪

本記事がどなたかの参考になれば幸いです。  

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

Google検索でHEX値(カラー)を検索したらとっても便利だった!

とっちゃん@nyanco! です。

Web制作などで「今のこの色に近い色が欲しいなぁ」という時に便利なのが「Google検索」です!

GoogleでHEX値(16進数)を検索すると、下記のようにそのカラー情報が表示されます。

グラデーションエリアにある丸いボタンをグリグリ動かすと、即時にそのカラー情報が下に反映されます!

HEX値だけでなく、RGB、CMYKHSV、HSLもリアルタイムで反映されます!

気に入った色になれば、あとは必要なカラー情報をコピーするだけ!

特に基準の色が決まっていて、その色より少し薄い色・濃い色が欲しいという場面でとっても役に立つと思います。

Google先生、いつの間にかこんなこともできるようになってたんですね~

情報検索以外でもめちゃめちゃお世話になります。

本記事がどなたかの参考になれば幸いです。  

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

【WordPress】「何かうまくいかなかったようです」「返答が正しいJSONレスポンスではありません」エラーで満身創痍

とっちゃん@nyanco! です。

WordPressの色んなエラーで半日潰されましたというお話です。

▼こちらの記事の続きとなります
8000000.hatenablog.jp

WordPressは無事にインストールできたけど…

いざ、作業をするとエラーだらけでした T_T

テーマをカスタムしての公開ができない

テーマをカスタムして、いざ公開(保存)しようとすると…

何かうまくいかなかったようです。時間を置いてもう一度お試しください。

という、なんともアバウトなエラーメッセージが…

言われるままに、適当に時間をおいて何度か試すも結果は同じ。

奇妙なのが、一回目に「公開」で保存した内容はエラーメッセージは出てるもののちゃんと反映されてるということ。

Google先生に聞いてみると、同じように困ってる方は多いようでかなりの記事がヒット。

ほとんどが下記のような内容でした。

サーバーのセキュリティ設定であるWAF(Web Application Firewall)が原因で、サーバーのコントロールパネル(管理画面)から WAF設定を無効にして数分待てばできるようになるというもの。

すぐに試してみるも、結果は変わらず…

無駄に時間だけが過ぎていくので、別作業として考えていた固定ページ作成にシフトすることにしました、が…

固定ページ・投稿ページが公開できない

新規で固定ページを作成し、公開(保存)しようとすると…

返答が正しいJSONレスポンスではありません

という、今度は意味の分からないエラーメッセージが…

下書きには保存されるものの、時間をおいて何度か試すも結果は同じ…

Google先生に聞くと、何やら難しそうな内容の記事がたくさん出てきて半思考停止になりそうなところをグッとこらえ、頑張って調べ続けてるとなんとなく分かってきました。

どうも、PHPの設定を変更したら解決するとのこと。

PHPの設定はサーバーのコントロールパネルからか、php.ini」というファイルに記述を追記するか、または「CGIPHP」で特定のディレクトリだけPHPのバージョンを変更している場合は、そのディレクトリに「.user.ini」というファイルを作成してそこに記述するかということで試してみるも、結果は変わらず…

ここでも大きく時間を取られてしまい、無駄に焦りが出てきました。

WordPressのバージョンをダウンすることで直った、という記事も見つけたので、プラグインを使ってバージョンダウンを試そうとすると…

プラグインの検索ができない

プラグインの検索画面で検索しようとキーワードを入力して検索結果を待っていると…

クルクルと「検索してますよマーク」が延々と廻り続けるだけで一向に何も現れず…

テーマを検索しようとしても同じ症状でした。

最後の手段

ここまでで半日以上経過しており、何一つ作業が進んでいないという現実に精神は満身創痍になっておりました。

最後の手段として残しておいたWordPress本体再インストールを決行しました。

再インストールといっても、やったことはこれだけです。

WordPressをインストールしたディレクトリ内の全てのファイルをFTPソフトを使って削除
・特定のディレクトリだけPHPのバージョンをアップさせたいので、この記事の要領で「.htaccess」ファイルだけをディレクトリにアップロード
・サーバー(カゴヤ)のコントロールパネルからWordPress簡単インストールでWordPressをインストール
・データベースに関してはノータッチで、再インストール時には同じデータベースと接続

作業時間的には数分で完了。

WordPress再インストールの最中に「WordPressはすでにインストールされています」とか「ファイルを手動で削除してください」のようなメッセージが出ましたが、その通りに進めると特に問題なく無事にインストールは完了しました。

肝心のエラーはどうなったかと言うと…

全て無事にクリアーされてました!!

データベースは残したままだったので、細かく設定してたものはそのままキープされた状態だったし、もっと早く再インストールしておけば良かったと後悔しましたが、まぁかなり勉強になったということで。

結局原因はなんだったのかはハッキリしてませんが、今後どうしても解消しないエラーに出くわした時は、早めにWordPress再インストールを検討しようと思います。

本記事がどなたかの参考になれば幸いです。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

【定期】【5週目】40代オッサンがリファ+プチ筋トレで顔のシェイプアップに挑戦!

アイキャッチ画像

とっちゃん@nyanco! です。

40代オッサンがリファカラット+プチ筋トレで顔のシェイプアップに挑戦!【5週目】定期報告です。

企画概要記事はこちら。
8000000.hatenablog.jp

リファカラットのエクササイズは、下記のリファ公式サイトを見ながらコロコロしてます。各動作20回ずつ。
www.refa.net

プラス、「唇を締めながら」やるとより効果アップのようなのでこれはキープで。

「グッドモーニングエクササイズ」動画(「バックエクステンション」より変更)。

慣れるまで1日10回とします。
背筋の一部である、脊柱起立筋(せきちゅうりつきん)とハムストリングス(太ももの裏)を意識して行います。

プランク」は両肘をついてやるスタンダードなプランクを20秒キープ。

チャレンジ内容のおさらい

  • 目に見える変化が現れるまで毎日続けてビフォーアフターを確認
  • 経過報告は毎週木曜日に
  • 時間帯は以下の通り
    ・グッドモーニングエクササイズ:朝に10回
    ・リファカラット:夜に10分間
    プランク:寝る前に20秒

今週の感想とシェイプアップ具合

【比較用】2020/01/03の状態 [体重:65.1kg]
2020/01/03の顔下半分

2020/02/06の状態 [体重:63.2kg]
2020/02/06の顔下半分

顔は今週も特に変わらず。体重がまた増えつつあります…

「グッドモーニングエクササイズ」は朝に行うように変更しました。

理由としては、朝は意外と隙間時間があることと、「グッドモーニングエクササイズ」という名称からです。

粛々と続けて参ります。

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

イオンの「敷くだけ」の敷きパッドがとっても便利だった!

布団に置くだけの敷パッドがとっても便利だった!というお話です。

冬用の敷パッドがヘタってきたので買い換えようと、ふと訪れたイオンで見つけたのがこちらの商品。

敷パッド 敷くだけでずれにくいゴムなしタイプ

なんと、布団に置くだけで良い敷きパッド!

商品名はズバリ、トップバリュ「着脱簡単 極細フランネル 敷パッド 敷くだけでずれにくいゴムなしタイプ」!(長い ^^;)

裏面に滑り止めがついてるから、寝返りなどしてもズレないのだそう。

「吸湿発熱」「抗菌防臭」などの機能も嬉しいですね〜

▼裏側にアクリル樹脂のツブツブ滑り止めがついてます(ちょっと見にくいですが)。

これまではスタンダードな4箇所をゴムで固定するタイプの敷きパッドを使ってたのですが、

・着脱の際のマットレスを上げて4隅をセットして…という作業が地味に面倒。
・ゴムが伸びたり切れたりする。
・4箇所で固定しててもズレたりシワがよったりする。

…と、プチ不満がたくさんありました。

これら小さな不満を全部解消するかなり画期的な敷パッドなのでは??と思い即購入。

お値段も1,500円とお安いので迷いなく。

使ってみた感想

早速数日使ってみての感想は「確かにズレないし肌触りも良いしグッド!」でした。

うちは三つ折りに折り畳めるマットレスなので、毎朝起きたら折り畳んで、寝る前にひろげるといった作業を繰り返しているのですが、その際にもほぼズレないしシワにもなりません。

▼ゴム固定式の方は、ひろげた時にこんな感じでズレたりシワがよったりしてました。

冬の寝具として気になる温かさも全然問題なし。
肌触りも良く、すべすべで気持ち良いです。

唯一の不満は、カラーバリエーションが「ピンク」「ブルー」「ベージュ」と少ないのとそれぞれの色合いがイマイチだったことですかね〜

▼こちらは「ベージュ」ですが、ちょっとゴールドっぽくも見えて無駄にゴージャス感があります ^^;
お布団大好きなムギにゃんがチェックに来てました。

まとめ

ちゃんと「温かい」のに「着脱簡単&ズレない」という時短にもつながるアイデア商品、さすがイオンだなぁと思っていたら、他企業さんでも近い商品はすでに出てるみたいですね〜。

とはいえ、まだまだスタンダードとは言えないレベルだと思うので、このズレないゴムなしタイプ敷きパッド敷きパッドの当たり前になっていくことを期待しております♪

ほんとにオススメですので、敷きパッド買い替えの時には検討してみてくださいませ〜 ^^

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧

【WordPress】Luxeritasのフッターにある提供元表示の消し方について

とっちゃん@nyanco! です。

今回はワードプレスの人気無料テーマである「Luxeritas(ルクセリタス)」のフッターにある提供元表示の消し方についてというお話です。

▼関連記事はこちら
8000000.hatenablog.jp

消してもいいけど普通では消せないフッターの「提供元表示」

社内用の簡単なサイト作成の案件が来たので、Luxeritasテーマを元にしてサクッと作ってしまおうと思ったのですが、とある理由で断念しました。

その理由は、フッターにある「提供元表示」です。

▼これです!

WordPress Luxeritas Theme is provided by “Thought is free".

内容的には「テーマの提供元」が表記されている一文で、Luxeritasテーマの作者さんは別に消しても良いですよと名言はされているのですが…

どうも普通にやっても消せない対策が施されているようなのです。

私レベルが思いつく、CSSで非表示なんて全く効果ありません。

しかも、消し方の公開はNGとなっています。

作者さん曰く、提供元を消去する有料のプラグイン(¥5,230)があるのでそれを使ってくださいとのことでした。

▼詳しくは公式サイトのQ&Aをどうぞ
・Q&A よくある質問 | Luxeritas Theme

▼提供元表示消去プラグインはこちらから
Luxeritas 提供元表示消去プラグイン

ということで断念しました

個人ブログであれば「提供元表記」があっても気にならないですが、社内用とはいえ、会社案件ではそうもいかないなぁ…ということでLuxeritasをベースにするのは断念しました(「お金をかけずに」とも言われていたので有料プラグイン導入も見送り)。

Luxeritasは無料テーマですが、クライアントワークで使うのであれば実質有料テーマという認識を持つ方が良さそうですね。

無料でこんなに便利なテーマを公開してくださっている作者さんには感謝しかないですが、今回は別のテーマを探そうと思います。

それにしても、がっつりカスタマイズをする前に気付いて良かった…

今回は以上となります。
最後まで読んでいただきましてありがとうございました!
それではまた〜✧٩(ˊωˋ*)و✧