CMS関連

カスタムフィールド並び替えが数字の場合の注意点【WordPress】

カスタムフィールド順に並び替える場合、query_postsを使うと、こんな感じになります。

query_posts(
array(
"orderby" => "meta_value",
"meta_key" => "(カスタムフィールドのキー)",
"order" => "ASC"
)
);

しかし各投稿のカスタムフィールドの中身が、1,2,3,4,5,6,7,8,9,10,11,12・・・

となっている場合、順番が

1,11,12,2,3,4,5,6,7,8,9・・・

となってしまいます。

このような場合、orderbyはmeta_valueではなく、meta_value_numとしなくてはなりません。

query_posts(
array(
"orderby" => "meta_value_num",
"meta_key" => "(カスタムフィールドのキー)",
"order" => "ASC"
)
);

これで、並び替えの内容が数字と判断され、数字の順番通りに並びます。

参考サイト

query_posts:WordPress私的マニュアル

テンプレートタグ/query posts - WordPress Codex 日本語版

 

 

nandani | 2014年12月15日 | コメント(0) | トラックバック(0) | CMS関連

管理画面の投稿やカテゴリー(カスタムタクソノミー)画面でも並び替えを反映させる【WordPress】

カテゴリーおよびカスタムタクソノミーの並び替えを簡単に行えるプラグイン「PS Taxonomy Expander

フロントエンドでは、get_termsやwp_list_categoriesの"orderby"を"order"にすることによって、並び替えた順に並んでくれます。

しかし管理画面の「新規投稿を追加」や「投稿を編集」のカテゴリー選択リスト、および「カテゴリー」画面のカテゴリーリストでは並び順が反映されていません。

Category Order and Taxonomy Terms Order」というプラグインもあって、これを使用すると管理画面内の並び順も反映されるんですけどね。

こっちを使ってもいいし、「PS Taxonomy Expander」のまま、functions.phpに下記を追加しても構いません。


function my_get_terms_orderby($orderby){
  if(is_admin()){
    return "t.term_order";
  }else{
    return $orderby;
  }
}
add_filter('get_terms_orderby', 'my_get_terms_orderby', 10);

これで管理画面内のカテゴリーの並び順は強制的に、Term Orderで設定した並び順に並びます。

※必ず一度は並び替えの保存を行ってください。未保存のままだとカテゴリーリストが表示されなくなります。

しかしフック機能の便利さには舌を巻きますね。何でもできる気分になりますw

nandani | 2014年12月02日 | コメント(0) | トラックバック(1) | CMS関連 | PHP関連

ページのスラッグからデータを引き出す方法【WordPress】

get_page_by_path("スラッグ名");

で、そのスラッグ名のページ(固定ページ)を取得できます。

第3引数をpostとすれば、「投稿」から取得できます。

get_page_by_path("スラッグ名", "OBJECT", "post");

なお、固定ページで、親ページが設定されている場合、親ページのスラッグも含める必要があります。

get_page_by_path("親ページのスラッグ名/スラッグ名");

だから、やっぱり正確にはスラッグ名ではないんですね。

 

参考サイト

get_page_by_path:WordPress私的マニュアル

nandani | 2014年11月24日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連

WordPressでTinyMCEの入力フィールドを作る場合

任意の場所に、Wordpressの内容入力フィールドと同じようにリッチテキストエディタ(TinyMCE)を設置する方法は、

wp_editor( "(内容)", '(ID)');

で、設置できます。

第3引数に細かい設定ができますが、(ID)をnameと同じにしていればこれだけでもOKです。

プラグインなしでカスタムフィールド作ってた際(functions.phpに直書き)どうやったらリッチテキストエディタになるのか、かなり苦戦したのでメモ。

参考サイト

wp_editor:WordPress私的マニュアル

 

nandani | 2014年11月12日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連

初期テーマの設定【WordPress】

WordPressの初期テーマは、「twentyxxxx」のような、最初から入っているテーマに設定されています。

これはこのテーマを削除しても、インストール直後はそのテーマが選択されている状態となります。

1サイト・1Wordpressなら、特に初期テーマは気にしなくてもよいのですが、マルチサイト化する場合は、初期テーマを任意のものにしたい、かもしれません。どのサイトもテーマを統一したいのに追加するたびに、テーマを選択しなくてはなりませんからね。

ということで、Wordpress本体の中から、設定されている場所を探します。

wp-includes/default-constants.php

の中に、

define( 'WP_DEFAULT_THEME', 'twentyfourteen' );

という記述があります。

これがテーマの初期設定です。

これを変えれば、初期テーマを変えることができるのですが、Wordpressをアップデートするたびに修正するのは面倒なので、wp-config.phpにこれを追記します。

define( 'WP_DEFAULT_THEME', 'xxxxxxxx' );

xxxxxxxxには、初期テーマにしたいテーマのフォルダ名を記述してください。

これで、こちらの設定が優先されます。

nandani | 2014年09月12日 | コメント(0) | トラックバック(0) | CMS関連

固定ページの子ページを表示するショートコード【WordPress】

開いた固定ページの子ページが、自動的にリスト表示されるようにしたい場合、wp_list_pagesをショートコードにしてしまうと便利です。

functions.phpに下記を追記します。

function pageChild() {
	global $post;
	
	$args = array('depth'        => 0,
		'show_date'    => NULL,
		'date_format'  => get_option('date_format'),
		'child_of'     => $post->ID,
		'exclude'      => NULL,
		'include'      => NULL,
		'title_li'     => '',
		'echo'         => 0,
		'authors'      => NULL,
		'sort_column'  => 'menu_order, post_title',
		'link_before'  => '',
		'link_after'   => '',
		'exclude_tree' => '' ); 
	
	$return = '<ul class="page_child">';
	$return .= wp_list_pages($args);
	$return .= '</ul>';
	
	return $return;
}
add_shortcode('page_child', 'pageChild');

子ページ持ちの固定ページに

[page_child]

と記述すると、その子ページがリスト表示されるようになります。

関数自体はなんてことないものですが、ショートコードって便利ですね。

nandani | 2014年06月11日 | コメント(0) | トラックバック(0) | CMS関連 | PHP関連

MTタグとWordPressタグ【カテゴリー編】

メニューに戻る

WordPressにおいて、カスタムタクソノミーもカテゴリーと同じように扱うことができますが、割と使用する関数や変数が異なりややこしいので、ここは通常の「カテゴリー」に絞ります。

(さらに…)

nandani | 2013年06月26日 | コメント(0) | トラックバック(0) | CMS関連

get_postsで取得したデータでも、ショートコードを実行する【WordPress】

メモ。

the_content()で表示した「内容」ならば自動的にショートコードが実行されるのですが、get_postsで取得した記事の「内容(例えば$hoge->post_content)」では、ショートコードが実行されません。

そのままショートコードが表示されてしまいます。

そういう場合は、do_shortcode関数を使用しましょう。

do_shortcode($hoge->post_content);

これで、内容中に含まれるショートコードが実行されるようになります。

なお、get_the_content()でも同様にショートコードが実行されませんので同じく

do_shortcode(get_the_content());

としてください。

参考サイト

WordPress: フィルターより前にショートコードを実行させる | 半月記 @ 半月記半月記

do_shortcode:WordPress私的マニュアル

nandani | 2013年06月21日 | コメント(0) | トラックバック(1) | API関連 | CMS関連

Copyright(c) 2010 - 2024 ダリの雑記