駆け出しプログラマー奮闘雑記

自分用技術録(多分雑)行き着いてわからなかった人すまん。

Vagrant + VirtualBox + PuTTY で 開発環境を作る

PHPの開発環境を作ろうと、ドットインストール ローカル開発環境の構築 [Windows編]をやってみた。

手順

PHPフォルダーを作成しindex.phpにテストコードを書いて、PuTTYphpコマンド入力しサーバーを立ち上げて反映されるところまで確認した。

[Vagrant] default: SSH auth method: private keyから進まない

Vagrantvagrant up が、default: SSH auth method: private key から一向に進まなかったので調べて参考にさせてもらいました。

原因

VT-xが有効になっていない。

インテル バーチャライゼーション・テクノロジー - Wikipedia

要は、仮想化するために必要な設定が有効になってない。 Windows 10 HOME なので、Shift + 再起動で起動。

マウスコンピューター FAQ アーカイブページ

変更したところ

  • [Advanced] Virtualization Technology: Enabled
  • [Security] Virtualization Technology: Enabled

これら2つを有効に。

VT-xの状態を確認するには、VirtualChecker3を使うとわかりやすい。

余談

Vagrantfileは、 end までコメントアウトを解除してGUIをtrueに。

  config.vm.provider "virtualbox" do |vb|
      # Display the VirtualBox GUI when booting the machine
  vb.gui = true
  #
  #   # Customize the amount of memory on the VM:
  #   vb.memory = "1024"
  end

もっとハマるかなと思ったけど、意外と簡単に出来た。

ページネーションが表示されない・リンクが取得できない・表示件数を変えたいなどの処理で苦戦したまとめ

今回の実装で困った箇所と問題

JS

  1. 画面の高さを取得してスライダーのイメージを内包してる要素のサイズを変えるとspの時にダサい
  2. スライダーで<``>ボタンを押した後の処理で、自動再生を再開始させるのは手間がかかる
  3. フルードイメージは元画像の画質を考慮してmaxをそれ以上に広げないようにしないと画像荒くてダサい

今回の対処策

1は、JS内で読み込みの条件分岐をする or CSSのメディアクエリと!importantで力業 2は、ボタンを押された時点で自動再生を諦める 3は、<img>そのものにmaxの指定と外包している要素にメディアクエリで適切な単位を指定

WordPress/PHP

  1. カスタム投稿タイプのアーカイブページで投稿数を操作できない
  2. ページネーションが表示されない
  3. function.phpで、クエリを書き換えるために使用したアーカイブページの条件分岐が適応されない

原因と解決策、対処

1の、一ページ当たりの投稿数が反映されない場合はまずWP管理管理画面で設定可能なデフォルトの設定が反映されていないか確認すること。 また、カスタム投稿を使用している場合は、is_archive()がパラメーターを受け付けないため、適宜別の方法でif文の条件分岐を使う。 posts_per_pageに件数を指定する必要がある。

また、それでも適応しない場合はクエリを書き換えるか、別にクエリを作る必要がある。 今回は、いくつか用意したカスタム投稿タイプのパターンの中で一部のアーカイブページのみクエリを書き換えて、デフォルトのクエリと応用して対応した。

2の、ページネーションはURLの設定をリライトで書き換えた。リンク先の取得で困った。 実装したかったのは、http://domain/slag/pagetitel/page/num/で別のURLで書き換えたリンク先が404になったり、デフォルトのURLですら404になったり苦戦した。

この場合、万が一うまく行かない場合はサーバー側の問題であるときもあるので、違う環境で試して本番でだけ表示がされないような場合はサーバーも疑う。

あと、サーバー側にもキャッシュがあるので、クリアしてみる必要もあるかも(この場合、プラグインを使用するのがいいが動かなくなる可能性があるためバックアップと状況で見定める必要があるのを念頭に置いておくこと) リライトと、/page/num/リダイレクトを禁じて対処した。調べてみて試したけど、リダイレクトの処理は不要かも。

3の、function.phpで条件分岐の為に使ったis_archive()がパラメータを受け付けなかったため、is_post_type_archive()を使用して、スラッグを指定して対応した。 逆に、適応できるスラッグとできないスラッグが出たためデフォルト設定をうまく使用し要件を満たしたので原因解明まで至っていない。 この辺は、設計の甘さが関係しているかと推測されていて、コンテンツの呼び出しに使った関数やループの兼ね合いだと考えている。

ページネーションを呼び出すためにposts_per_pageを書き換えて使用したページではうまく適用されたが、適用したかったテンプレートファイルに同じようなコードを使用しても表示されなかったため、そもそもposts_per_pageが書き換えられていない印象を受けた。 次に同じことで困ったら、原因はこの辺かなと思う。

今後の対策

今回の傾向から考えるにWordPressでつまずくときは、大体ループ処理。 クエリの仕様と、関数がパラメーターを受け付けているのかなど、WordPress Codex見ながら疑う方がいいかもしれない。

反省点としては、最初にもう少し設計を考えた方が良かったかも。

一部参考にした記事一覧