Blogブログ

Archives

is_main_query, pre_get_post を使う。

is_main_query, pre_get_post を使う。 これまで、Wordpressのテーマカスタマイズではquery_postsを使って、取得するポストの条件を定義してDBへアクセス、という手法を使っていた。 が、これだとDBへ2度アクセスする事になり、パフォーマンスの低下を招くことになる。 そこで使うのがpre_get_posts フックとis_main_query()関数。 まずpre_get_postsだが、これはテンプレートファイルにアクセスする前に、メインクエリを変更する為のフックだそう。 そして、is_main_query()関数。 これは、Wordpress標準のクエリなのか、テンプレートから呼び出されたのかを判別するもの。 この2つを使い、function.phpに以下のように記載することで、テンプレート呼び出し前にメインクエリに渡すパラメータを定義出来る。 要は奏することで、DBアクセスを一度にしてしまおうという事。 例えば、以下の様な形で使う事ができる。 function get_my_custom_posts( $query ) { /* 1 */ if ( is_admin() || ! $query->is_main_query() ){ return; } /* 2 */ if ( is_home() && $query->is_main_query() ) { $query->set( ‘posts_per_page’, 1 ); return; } /* 3 */ if ( is_post_type_archive( POSTTYPE ) && […]

Drag and drop.

ファイルのDrag and dropが出来る、jsライブラリを実装してみた。ちなみにこれはver.2よりライブラリが不要になったよう。 サイトURL: http://www.dropzonejs.com/ github: https://github.com/component/component 使い方: Preparation まずはこちらから一式DL. https://github.com/enyo/dropzone/tree/master/downloads ファイル構成はこちら。 / css/ images/ uploads/ dropzone.js index.php upload.php Let's Work with Dropzone! css,jsファイルを読みこみ、下を記述。   <form action="upload.php" class="dropzone" id="">   </form> class dropzoneを与える事で起動するらしい。 Do php work PHPの記述。upload.phpに以下を記述。 $ds = DIRECTORY_SEPARATOR; //1 $storeFolder = 'uploads'; //2 if (!empty($_FILES)) { $tempFile = $_FILES[‘file’][‘tmp_name’]; //3 $targetPath = dirname( […]

Magic fields

WordPressのプラグイン、Magic Fields 2のレビュー。 このプラグイン、投稿タイプ設定はregister post typeのパラメーターが殆ど使用出来るのと、カスタムフィールドの増減も出来るのでとても便利。 では備忘録。 値の取り出し方は複数あるが、とりあえず以下について。 get() get_image() get_group() get() get ($fieldName, $groupIndex=1, $fieldIndex=1, $readyForEIP=true,$post_id=NULL) $fieldName: フィールド名 $groupIndex: グループのインデックス(1~) $fieldIndex: フィールドのインデックス(1~) $readyForEIP: テキスト入力系のフィールドの時に、フロントから編集可能にする $post_id: ループ外で記事IDを指定して使える 複製可能なフィールドにも使えるけれど、複製しないフィールドに使う場合が多いかな。 get_image get_image ($fieldName, $groupIndex=1, $fieldIndex=1,$tag_img=1,$post_id=NULL,$override_params=NULL) $fieldName: フィールド名 $groupIndex: グループのインデックス(1~) $fieldIndex: フィールドのインデックス(1~) $tag_img: tag[1]で出力するか、url[0]で出力するか。 default = 1 post_id: ループ外で記事IDを指定して使える $override_params: かなりたくさんのパラメータがあり、ここで指定したものは他をオーバーライドするようだ。 ※この部分はwikiがスパニッシュなので、間違ってるかも width=200, height=200, zoom-crop=1, JPEG compression (1=worst, […]

cakephp basic2

cakePHPのメモ。 ■cakePHP 命名規則 1) DB Table ・複数形かつ小文字のアンダースコア法 例: sample_projects 2) Model ・単数形のキャメル記法 例: SampleProduct.php 3) Controller ・複数形のキャメル記法+Controller 例: SampleProductsController.php 4) Action ・小文字のアンダースコア法 例: sample_product() 5) View ・コントローラ名のディレクトリを作り、その中に格納 例: SampleProducts/index.ctp 6) Method ・先頭小文字のキャメル記法 例: sampleProduct() 7) Valiable ・先頭小文字のキャメル記法、ただしクラスは先頭大文字 例: $value, $SampleProduct 8) Constant ・全て大文字 例: CONSTANT ■その他の規則 ・コメントは英語を推奨 ・インデントはタブを使用 ・制御構造は簡略化しない ・ファイル読み込みは include_onceで行う ■番外編 キャッシュの消し方 cake/app/tmp/cache/models/ cake/app/tmp/cache/persistent/ […]

Vim how to change color scheme

Vimの色の変え方。 vim /etc/vimrc でファイルを開き、 colorscheme blue こいつを追加。 選べる色は、 blue, darkblue, default, delek, desert, elflord, evening, koehler, morning, murphy, pablo, peachpuff, ron, shine, slate, torte, zellner これだけあるそう。 参考はこちら。 http://docs.oseems.com/general/application/vim/change-color-scheme Appreciate!!

Get post from multiple blogs

WordPress のマルチブログから記事を持ってくる関数を作成。 こちらを参考にさせて頂きました。ありがとうございます。 http://blog.cgfm.jp/garyu/archives/2223 $showpostsで表示数を設定可能。 function get_posts_from_all($showposts, $denyBlogs = array()) { global $wpdb; // current blog id $mysiteid = $GLOBALS[‘blog_id’]; // get child blog ids $blogList = $wpdb->get_results(” SELECT blog_id FROM $wpdb->blogs ORDER BY blog_id” ); // post count $pcount = 0; $should_get_amount = $showposts * count($blogList); foreach ($blogList as $blog) { $blog_id = $blog->blog_id; […]

サイズ可変の動画はめ込みiframe

レスポンシブデザインで動画を使う場合、ユーザはyoutubeやvimeoからはめ込みURLを取ってくるのが一般的だと思う。 その場合の固定されてるサイズを、可変にする方法。 参考にしたのはこちら。 http://css-tricks.com/NetMag/FluidWidthVideo/demo.php (function($){ var $myVideos = $(“iframe[src^=’http://player.vimeo.com’], iframe[src^=’http://www.youtube.com’], object, embed”), $myVideos.each(function() { $(this).attr(‘data-aspectRatio’, this.height / this.width) .removeAttr(‘height’) .removeAttr(‘width’); }); $(window).resize(function() { $myVideos.each(function() { var $this = $(this); var newWidth = $this.parent(“div.vimeo”).width(); $this.width(newWidth).height(newWidth * $this.attr(‘data-aspectRatio’)); }); }).resize(); })(jQuery); 今回のポイントは2つ。 1)jQueryセレクタで、^=って使ったことなかった。 便利だな、覚えておこう。 (この場合の iframe[src^=’http://.. は、http://..から初めまる、という意味。) 2)iframeにattiribute data-aspectRatioを付与して縦横比率を持たせている。 HTML5で追加された、独自データ属性を使っている。 http://www.html5.jp/tag/attributes/data.html 値をもたせる場所に悩むことがあったが、これで解決するな。 勉強になりました。感謝。

WordPressでAJAX

wordpressでajax!! 個人的にはajax遷移の動きが非常に気に入っている。 Wordpressで使得時の、実装方法をまとめてみた。 僕がよくやる、ajax&PHPで仕組みを作る場合、 ・jsでトリガー ・PHP関数に値を投げる ・json形式で結果を受け取る ・jsでエレメントを描画 とゆう流れなんだが、これをWordpressでやってみる。 まず、必要なのはjs, php 今回は練習として、アーカイブページでカテゴリー検索!というのを作ってみる。 ■ Create JS onload_post_archive.jsの名前でファイルを作成。 themedir/js/に置く。 ■ Hook the action. ここで、ajax_archive_posts.phpというファイル作成。 themedir/に置くとする。 この中に、以下を記載。 // Add js add_action( ‘wp_head’, ‘add_script_for_ajax_post_archive’ ); if(!function_exists(“add_script_for_ajax_post_archive”)): function add_script_for_ajax_post_archive(){ wp_enqueue_script(‘onload_post_archive’, get_template_directory_uri(). “/js/onload_post_archive.js”); wp_localize_script(‘onload_post_archive’, ‘OLPR’, array( ‘endpoint’ => admin_url(‘admin-ajax.php’), ‘action’ => ‘get_ajax_pdf_request’ )); } endif; // Define function add_action(‘wp_ajax_get_ajax_post_archive, ‘_get_ajax_post_archive); add_action(‘wp_ajax_nopriv_get_ajax_post_archive’, […]