かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

WordPress WP_Query カスタム投稿の特定のtaxonomyを除く(含む)の指定方法

基本的にマニュアルに書いて有ることだけど、すぐ忘れるのでメモ。

タクソノミー(taxonomy)のパラメーター

タクソノミーに関する指定は、tax_queryをキーにした配列内に指定する。

特定の term を除く(含む) WP_Queryの指定方法

operator オプジョンで指定する。

<?php
$args = [
  'post_type' => ['my_post_type'],
  // タクソノミーに関する指定
  'tax_query' => [
    [
      // タクソノミー作成時に指定したタクソノミー名
      'taxonomy' => 'tax_name',
      // terms を slug で指定する
      'field'    => 'slug',
      // fieldで指定した方法で term そ指定する。この場合は slug 名で指定
      'terms'    => [
        'term_slug',
      ],
      // 上記のtermを除く場合は 'NOT IN' ・含む場合は 'IN'
      'operator' => 'NOT IN',
    ],
  ],
];
$the_query = new WP_Query($args);
// 処理
wp_reset_postdata();

 
関係ないけど、はてなブログのマークダウン、リンクをリストにしようとした時URLによっては-だとリストにならない時があってちょっとイライラする…


[参考]

Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術

Real World HTTP ―歴史とコードに学ぶインターネットとウェブ技術

PHP Bool値を文字列として出力したい。

PHP製の管理画面とかでtruefalse といったBoolean値をそのまま表示させたい時

単純に文字列にキャストしても上手くいかない

<?php
(string) true;  // => "1"
(string) false; // => ""
strval( true );  // => "1"
strval( false ); // => ""

// 空文字を連結してもダメ
echo true . '';  // => "1"
echo false . ''; // => ""

(string), strval で文字列化しても上手く表示することができません。

var_export 関数を使うと true / false の文字列で表示される

<?php
var_export( true );  // => "true"
var_export( false ); // => "false"

変数にして使用したい時は、第二引数をtrue にすればOK

<?php
$boolean = true;
$val = var_export( $boolean, true );
echo $val; // => "true"

三項演算子やif文を使うパターン

簡単ですが、Boolean値以外でもtrueかfalseでされてしまう問題があるのでそれを許容できるのであればOK。

<?php
function print_boolean($val) {
  echo ($val)? 'true':'false';
}
print_boolean( true );  // => "true"
print_boolean( false ); // => "false"

// Boolean値以外でも true か false で出力される
print_boolean(  );  // => "false"
print_boolean( 0 ); // => "false"
print_boolean("false"); // => "true"

Boolean を var_dump、prent_r した時の違い

<?php
var_dump( true );  // => bool(true)
var_dump( false ); // =>  bool(false)

print_r( true );  // => "1"
print_r( false ); // => ""

 
Bool値を文字列にキャストした際にfalse""になってしまうのは、文字列の"false"をBoolean値にキャストするとtrueになる仕様のためなんじゃないかなと思いました。👇

<?php
$bool = (bool) "false";
var_dump( $bool ); // => bool(true)
$bool = (bool) 0
var_dump( $bool ); // => bool(false)

[参考]

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~

いきなりはじめるPHP~ワクワク・ドキドキの入門教室~

SublimeText マークダウンの時だけ行末スペースの自動削除をOFFにしたい。

Atomに乗り遅れてSublimeTextを使い続けてるマンです。
SublimeTextの設定で"trim_trailing_white_space_on_save": trueにしていると不要な行末のスペースを自動削除できて超便利です。

しかしREADME.mdとかマークダウンを書くことが増えているので、同じプロジェクト内のプロフラムのファイルは行末の無駄なスペースを削除したいけど、マークダウンで削除されるのは改行の時にチョット困る...
と、暫くマークダウンだけ別のエディタで開いたりしていましたが、いい加減面倒くささがMAX限界値に達したので重すぎる腰を上げてマークダウンの時だけ行末スペースの自動削除をOFFにしたのでメモしておきます。

インストールしてるテーマやパッケージなど

  • MarkdownLight - マークダウンのシンタックスハイライト
  • Markdown Extended - マークダウンのコード内のシンタックスハイライト
  • OmniMarkupPreviewer - ブラウザでリアルタイムでマークダウンのプレビューがみれるパッケージ
    ⌘+alt+Oでプレビューを起動
  • Table Editor - テーブルをフォーマットしてくれるパッケージ
    テーブルの記述位置でtabキーを押すとキレイにフォーマットしてくれる

Markdownの時だけ有効な設定ファイルを作成する

  1. テキトーな.mdなマークダウンファイルを作成し、シンタックスMarkdown Extendedにする
  2. メニューからView > Syntax > Open all with current extension as... > Markdown Extended を選択
  3. 設定ファイル Markdown Extended.sublime-settingsMacの場合~/Library/Application Support/Sublime Text 3/Packages/User/内に作成される

シンタックスMarkdownにする時は、2ではMarkdownを選択。設定ファイルはMarkdown.sublime-settingsになります

シンタックスMarkdown(Markdown Extended)の時、保存時の行末スペースの自動削除をOFFにする

先の手順で作成された設定ファイル(Markdown Extended.sublime-settings)を開き下記のように記述して保存すればOK

{
  // シンタックスハイライトに使用するカラースキームファイルのパス (適時変更してください)
  "color_scheme": "Packages/User/SublimeLinter/MarkdownLight (SL).tmTheme",
  // Table Editor パッケージを使用する
  "enable_table_editor": true,
  // Markdown Extended で使用する拡張子
  "extensions":
  [
    "md",
    "markdown"
  ],
  // タブサイズ
  "tab_size": 2,
  // タブをスペースに変換する
  "translate_tabs_to_spaces": true,
  // 保存時の行末スペース自動削除 OFF
  "trim_trailing_white_space_on_save": false
}

設定は適時変更してください。

color_scheme に使用したいファイルが見つからない時

パッケージコントロールcolor_schemeで使用したいスキームをインストールしてもファイルが見つからない時は、 一度メニューSublime Text > Preferences > Color Scheme から使用したいスキームを選択するとSublime Text 3/Packages/User/内にファイルが作成されます。
この時、全体のカラースキームが変更されるので、ファイルが作成されたら同様にメニューから元のスキームを再選択してもとに戻して上げる必要があります。
 
これで、ようやく面倒くささから開放されました!
pug(旧jade)でも行末スペースが欲しいときもあるので、同じような設定にしても良いかもしれません。
Atomとかならもっと簡単に設定できるのかしら?

ほんと、世の中 W◯rdとか辞めてMarkdownが主流になって欲しい。(TinyMCEゴリゴリカスタマイズって苦いお仕事の体験もあってビジュアルエディアあまり好きじゃない)


[参考]

最速の仕事術はプログラマーが知っている

最速の仕事術はプログラマーが知っている