【WordPress】メディアライブラリ の画像IDを取得する

WordPressのメディアライブラリ にアップロードされた画像IDを取得する方法です。

例えば6件取得してギャラリーで表示するとき。

$ids = get_posts( 
    array(
        'post_type'      => 'attachment', 
        'post_mime_type' => 'image', 
        'post_status'    => 'inherit', 
        'posts_per_page' => 6,
        'fields'         => 'ids',
    ) 
);

$ids_str = '';
foreach ( $ids as $id ) {
    $ids_str .= $id . ',';
}

$ids_str = rtrim($ids_str, ',');

// ショートコードでギャラリーを表示
echo do_shortcode( '[gallery ids="' . $ids .'"]' );

意外と便利なのでは!

 

WordPress

【vagrant+CentOS+CakePHP】JavaScriptファイルで何書いてもillegal characterって言われたときメモ..

jsファイルに何かいてもillegal characterって言われて泣くかと思った。(ブラウザはFirefox)

vagrantで下の記事通りに設定したらちゃんとjs動くようになった。本当に助かった・・・。

JavaScript

【WordPress】プラグイン化したカスタム投稿をテーマ内で使うとき

通常テーマ内でカスタム投稿を表示させる時に

$args = array( "posts_per_page" => 5,
        "post_type" => 'news'
    );
$the_query = new WP_Query( $args );
if($posts):

と書けば表示されるのに、プラグイン化していたので表示されなかった話。

 

functions.phpでカスタム投稿を追加している場合は必要ないが、newsというカスタム投稿をプラグイン化していたので、以下の記述が必要でした。

    public function __construct() {
        add_action( 'pre_get_posts', array($this, 'add_my_post_types_to_query') );
    }

    // queryにnewsをセットする
    function add_my_post_types_to_query( $query ) {
        if ( is_home() && $query->is_main_query() )
            $query->set( 'post_type', array( 'post', 'page', 'news' ) );
        return $query;
    }

WordPressプラグインの作り方は、また後日ちゃんとした記事にしたいと思ってます。今回はとりあえず忘れそうなのでメモだけで失礼。

WordPress

【pure js】アイキャッチの下などにあるヘッダーをスクロール後固定する

pureでvanillaな素のものjsで。

[ アイキャッチ画像 ]

[ ヘッダー ]

[ コンテンツ ]

みたいな作りのwebページでスクロール後ヘッダーを固定する。

固定解除部分は 元のcssにあわせて書けばおkです。

 

JavaScript

XAMPP-VMをアンインストールする+α

XAMPPのVMじゃない方を使いたかったのに、VMの方を入れてしまった。

XAMPP.appをゴミ箱に入れて削除して(一応AppCleaner.appで関連ファイルも少し消した)、使いたかった方のXAMPPをインストールして使ってみようとしてもApacheが起動できない。

VM版を公式ページに書いてあった方法で削除してみた。

  1. XAMPP.appをゴミ箱に入れる
  2. ~/.bitnami内を削除

この後VMじゃない方入れ直してもApache動かなかった。(意味ない)

 

とりあえずこの件はstackoverflowで解決。

でもこれさっきも打った気がしないでもないし、やっぱり2の処理が必要だったのかもしれない。

iOSでiframeのwidthの挙動がおかしくなる時の対処メモ【pure js】

pureでvanillaな素のjsで。

どういう挙動かというと

iframeロード → 表示(多分画面幅くらい)→ ちょっと縮小 → さらに縮小して目的のwidthになる

という感じ。画像は載せられないので割愛します。

指定したwidthからはみ出た状態で始まり、最後には指定したwidthになるといった挙動ですね。

結局

var iframe = document.createElement('iframe');
iframe.width = '100%';
iframe.height = '100%';

とかいう風に書いているところに

iframe.scrolling = 'no';

この一文を入れてやると解決しました。

viewportとかwidthのこといっぱい調べたのになんのことはない・・・。

JavaScript

【ターミナル】よく使うコマンドをエイリアスにして登録しておく

いつも使う特定のディレクトリに毎度cdで移動するのが結構めんどいので、適当に決めた単語打つと移動できるようにする。

 

vi ~/.bashrc 

んでこの中に

# wordpress develop
alias wpdev='cd ~/vagrant/VVV/www/wordpress-develop/htdocs/wp-content/themes'

みたいにしてコマンドを登録する。:wqで保存して戻って

source ~/.bashrc 

で反映させておく。

alias

で登録したのが出てくればok。今回の例だとwpdevを打てば移動できるようになってます。

.bash_porfileに.bashrcを読み込む処理が書いてなければ書いておいてください。

vi ~/.bash_profile
if [ -f ~/.bashrc ] ; then
. ~/.bashrc
fi

地味に忘れてたのでメモ。エイリアスっていう言葉がなかなか出てこんのジャイ。

Mac

WordPressで現在のカテゴリから親カテゴリ/祖先カテゴリのスラッグを取得

//現在のカテゴリを取得
$categories = get_the_category($post->ID);
$category_slugs = array();
foreach($categories as $category){
    $cat = $category;
    array_push($category_slugs,$cat->slug);
    //親のカテゴリがなくなるまで回す
    while ($cat->parent) {
        $cat_parent_id = $cat->parent;
        $cat = get_category($cat_parent_id);
        array_push($category_slugs,$cat->slug);
    }
}

わりと頑張ってPHP書いてる。

WordPress