htmlでphpを動かす~さくらサーバ編~

htmlでphpを動かしたいとか言うおかしな人がいると、色々設定しないといけないから本気で辛い。

 

特にさくらサーバだとなんだかしらないけど他のレンサバにはない設定をしないといけないので余計面倒くさい。

 

phpをhtmlで動かす手順(さくらサーバ編)

さくらサーバ上で動かす場合は以下の手順が必要です。

  1. php.cgi」の設置、設定

  2. .htaccessの設置、設定

 

  • php.cgi」の設置、設定

まず、「php.cgi」ファイルと作成し、どこかに格納。

#!/bin/sh
exec /usr/local/bin/php-cgi

この2行を書いて、どこかに置く。ウェブ公開ディレクトリならどこでも良いみたいです。パーミッションは「705」「755」に。

※ファイルの文字コードは「EUC-JP」、改行コードは「LF」です。

 

Action myphp-script /php.cgi
AddHandler myphp-script .php .html

上記を記述したファイルをphpを実行したいhtmlが入っているディレクトリにアップし、パーミッションを「644」にする。

上の行は先に置いたphp.cgiまでのパスになります。

 

私はサブドメインで設定しててちょっとバタついたんですが、サブドメインの場合、

当たり前だけど、トップレベルに指定してるディレクトリが開始になるので、そのフォルダに格納→パスを/php.cgiにするとうまくいきます。

 

注意点

ファイルの文字コードは重要です。私は通常sublime textでコーディングをしているのと多くのサイトをutf-8で作成する必要があるので、アプリケーションの設定を変更するのが面倒&怖かったので、さくらサーバのファイルマネジャーで作業しました。(パーミッションはFTPソフトで設定)

ファイルマネージャはデフォルトでEUC-JP、LFになってるので楽ちんです。

 

以下のサイトを参考させていただきました。

http://omoteurasouko.hatenablog.com/entry/sakura-html-php

gulp インストール時にエラー出ちゃって大慌て

エディターはsublime text3を使用していたのですが、vs codeが良いっぽい話をちらっと聞いたので試したら、入力補助とか素晴らしくて。

これを機に移行してみようかと思ったのですが、

sublime text3にある素敵な機能『SFTP/FTP』と全く同じ自動アップロード機能がextentionで用意されていないらしく。

 

自動アップロードはあるのですが、scssファイルをコンパイルして生成されるcssを自動でアップロードしてくれる機能がちょっと見当たらなくて。

これがないと正直使い物にならないとまで思ってます。

 

で、色々ごにょったらもしかしたら「gulp」で自動処理させたらいけるかもとなったのでとりあえずgulpのインストールをしてみました。(言葉、あってるのかな?)

 

参考にさせていただいたのはここ

flex-box.net

で、インストール中に「gulpのversionを確認しましょ」ってあったので、記述通りのコマンドを入力すると。。。。

 

エラーに。

「gulp : 用語 'gulp' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいこ
とを確認してから、再試行してください。」

 

何回試しても、こちらの文字が赤文字で表示され…

pathが通ってないから?

インストールがうまくできてないから?

と色々と試してみたものの全くverが表示されない。

 

何がいけないのかしら?と思って調べてみたら、

見つけました。原因。

web-guided.com

「・gulpがインストールされているかどうか(ローカルインストールの場合)」のコマンドを入力したところ、無事ver表示が!

そう、ローカルインストールしていたのに、ずーっとグローバルインストールのコマンド叩いてました。

ローカルでのインストール方法だったので、コマンドもローカルのものだと思い込んでました。

 

はぁ。よくわからないでやるとこういうことが起きるのよね。

 

 

カスタムタクソノミーが編集画面に表示されない時は…

wordpress、ほんとに面倒ww

 

CPT UIでタクソノミーを追加したのに編集画面に選択が表示されない。。。となったので、備忘録。

 

タクソノミーの設定画面/設定にある「管理画面でカラムを表示」はデフォルトでFalseになっているけど、これをtrueにすれば表示される。

 

あぁ、たったこれだけか。

10分を返してほしい…

特定のカテゴリだけ子カテゴリを表示

投稿のカテゴリ一覧を表示する際に、
特定のカテゴリーのみ子カテゴリーがあり、そのカテゴリと子カテゴリのみ子カテゴリー一覧へのリンクを置きたいとします。

 

例)

●カテゴリー01

●カテゴリー02

●カテゴリー03
 〇カテゴリー03_01
 〇カテゴリー03_02
 〇カテゴリー03_03

 カテゴリー03の時とカテゴリー03_xxの時に、カテゴリー03_xxのリンクを表示させる

 

まず、特定のカテゴリーの時のみ表示させる&子カテゴリーに表示させる場合は

if (is_category('category') || cat_is_ancestor_of(3, $cat)) :

※'category'にはカテゴリー名、3は親カテゴリーのIDが入ります。

 

これで、親カテゴリーとその子カテゴリーのみに表示させることができます。

 

次に、子カテゴリーのリンクの設置ですが、

  <?php wp_list_categories('child_of=3'); ?>

で、リンクが生成されます。

この方法だと投稿のカテゴリー設定から追加されても自動でリンクが生成されるので運用も便利!!!!!!!!!!

 

 

投稿に階層を持たせるとカスタム投稿タイプにも影響しちゃうよね。

トップレベルからWPで管理しているサイトの「投稿」のURLは完全にパーマリンクに依存しますよね。

で、例えば「投稿」を/blog/ディレクトリ内で展開しようと思うと、パーマリンクディレクトリを追加することになるけど、そうすると「カスタム投稿タイプ」も全部/blog/配下に入ることになるから、それはちょっと都合悪いじゃんってなります。

 

そんな時はカスタム投稿タイプの設定で「フロントのリライト(with front)を「false」にしてあげれば意図してるディレクトリ構造になります。

CPT UIで作ったカスタム投稿タイプだと管理画面から行えますが、functions.phpに記述して作った場合は'rewrite'を追加してあげないといけないです。

 

で、'rewrite'の配列に'with_front'があるから、記述はこんな感じ

 

register_post_type( '●●', //ポストタイプ

array(

'rewrite' => array('with_front' => false ),

)

 これで無事解決。

 

関数リファレンス/register post type - WordPress Codex 日本語版

カスタム投稿タイプのカテゴリー

普通の「投稿」だとカテゴリーが自動でついてくるけど、「カスタム投稿タイプ」の場合は、都度設定しないといけないよって話。

 

CPT UIを使用している場合は
「タクソノミーの追加と編集」から追加・編集ができるので簡単。

 

設定すれば、カスタム投稿タイプにもちゃんとカテゴリーが追加できます。

 

参考:

https://patakobo.com/2017/12/05/wordpress-12/

 

タクソノミー:カテゴリー分類のおおもと

ターム:タクソノミー内にいるカテゴリー