- WordPressアクションフックでHTML挿入
- 2024.04.05
- テーマファイルのテンプレートファイルを変更しなくてもOKなアクションフックの使い方です。Lightningで子テーマを使った場合にフッター部分にHTMLを挿入してみます。まず、該当のPHPファイルでdo_actionという記述を見つけます。もしも追加したい部分にdo_actionの記述があればソースはいじらずにその部分にHTMLの挿入が可能です。※functions.phpにアクションフックを追加するので必ずバックアップをとって編集する必要があります。今回は以下のようになっていたので、「lightning_copyright_before」がフック名です。<?php do_action( ‘lightning_copyright_before’ ); ?>(LightningのGeneration 3を利用したので対処ファイルは【_g3>template-parts>site-footer.php】)functions.php内に以下のように記述します。function sample_html(){ ?><div class=”sample-text”>追加したい文字</div><?php }add_action( ‘lightning_copyright_before’, ‘sample_html’ );※上記は、HTMLをそのまま記載するため、赤文字部分を追加する事でPHPを外しています。「add_action()」の第三引数に優先度(数値)を指定すると、指定した数値の小さい順に実行されるようになります。同じフックポイントに複数セットする時等で優先度が必要な場合に使うとよいでしょう。
- WPのカスタム投稿と固定ページのslugが同じ場合の表示について
- 2019.07.04
ある日固定ページの表示が急に変わってしまいましたので今後の参考の為に原因を記載します。
まず、これまでの固定ページのスラッグが「test」だったとすると以下のようなURLになります。
https://www.thrive-on.com/test今回の問題は、カスタム投稿を追加した際に固定ページのslugと同じ名前にしてしまった為
表示が変わってしまいました。カスタム投稿のアーカイブを使用しない場合は、has_archiveをfalseに設定すれば今回の問題は
発生せずに固定ページをそのまま表示していたのですが、has_archiveをtrueで
functions.phpに記述してしまった為でした。‘has_archive’ => false
但し、has_archiveをfalseに設定するとカスタム投稿の詳細ページも見れなく(404 NOT FOUND)なるので注意です。
- javascript、ajaxのデバッグ(備忘録)
- 2018.06.08
javascript、ajaxのデバッグですが、変数の値やajaxの戻り値などを見るのに
alert関数で変数などの中身を表示することは出来ますが、ajaxの戻り値が長い場合に
中身を見てみたいとなった時alert関数では全て表示されなかったり、
コピペできなかったりと不便です。
そんな時はconsole.log(hogehoge)とすると便利です。
今回、ajaxの戻り値がhtmlでかなり長文だったためalert関数では全て表示されず、コピーもできないので最初は画面で追ってみましたがどうにも不便なためコンソールに出力して確認することで作業の時短になりました。
- ウィンドウ幅で読み込むJavascriptを切り替える
- 2018.06.06
レスポンシブデザインの際に、PC用とスマホ用で別のJSを使用する必要があったので、
その方法を記載しておきます。<script type=”text/javascript”>
jQuery(document).ready(function($) {
if (window.matchMedia( ‘(min-width: 768px)’ ).matches) {
$.ajax({
url: ‘●●●●●_pc.js’,
dataType: ‘script’,
cache: false
});
} else {
$.ajax({
url: ‘●●●●●_sp.js’,
dataType: ‘script’,
cache: false
});
}
});
</script>ブレイクポイントはCSSに合わせて適宜変更する必要があります。
また、Google Chromeではローカル環境では正しく動作しないため、サーバー上で確認する必要があります。
ajax
- 2系CakePHPでのBasic認証
- 2017.08.23
CakePHPにはデフォルトでBasic認証が設定できる機能が搭載されております。
ネットで調べるとSecurityコンポーネントで簡単に実装できるという記事が多数みられますが
2系のCakePHPではエラーになってしまいます。
2系ではSecurityコンポーネントの代わりに新しいAuthコンポーネントによって処理するそうです。https://book.cakephp.org/2.0/ja/appendices/2-0-migration-guide.html
このAuthコンポーネントですが、usersテーブルを作ったり色々と面倒です。
しかもusersテーブルを別の機能で既に作成してしまって使用しているため
Authコンポーネント用のusersテーブルが作成できない事情もあり、別の方法で対処しました。コントローラ内の全てのアクションにBasic認証を設定したいなら
beforeFilter内に下記の記述を記載するだけ。
IDとパスワードは使いまわしができるように外部ファイルで設定しておいた
方が利便性は良いですが、今回は直書きで・・・$loginId = ‘hoge’;
$loginPassword = ‘hogehoge’;
$this->autoRender = false;
if (!isset($_SERVER[‘PHP_AUTH_USER’])) {
header(‘WWW-Authenticate: Basic realm=”Private Page”‘);
header(‘HTTP/1.0 401 Unauthorized’);
die(“id / password Required”);
} else {
if ($_SERVER[‘PHP_AUTH_USER’] != $loginId || $_SERVER[‘PHP_AUTH_PW’] != $loginPassword) {
header(‘WWW-Authenticate: Basic realm=”Private Page”‘);
header(‘HTTP/1.0 401 Unauthorized’);
die(“Invalid id / password combination. Please try again”);
}
}
$this->autoRender = true;↑ベーシック認証が通るまではautoRenderを切ってます。
今回、上記のソースでユーザ名とパスワードを入力するダイアログボックスは表示されたが、
何故か認証が通らない。
調べると$_SERVER[‘PHP_AUTH_USER’]と$_SERVER[‘PHP_AUTH_PW’]が取得できていないようでした。
そこで、webroot配下の.htaccessに以下の3行を追記RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) – [E=HTTP_AUTHORIZATION:%1]ちなみにapp配下の.htaccessに上記3行を追記してもダメでした。
app
├.htaccess
└webroot
├.htaccess