CMS関連

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) | トラックバック(0) | API関連 | CMS関連

pre_get_postsを使う場合は、管理画面にまで反映してしまわないよう注意

WordPressメモ。

サイトの検索にて、post_typeを絞ろうと、functions.phpに

function include_post_type($query) {
	if ($query->is_search()) {
		$query->set('post_type', array('post','xxx','xxx'));
	}
}
add_action( 'pre_get_posts', 'include_post_type' );

と記述したのですが、管理画面の検索にまでこれが反映されてしまいました。

正確には

function include_post_type($query) {
	if (!$query -> is_admin && $query->is_search()) {
		$query->set('post_type', array('post','xxx','xxx'));
	}
}
add_action( 'pre_get_posts', 'include_post_type' );

というように、「!$query -> is_admin」も必要だったみたいですね。

いきなり管理画面の検索がおかしくなったからあせったわ~^^;

 

参考サイト

query_postsを捨てよ、pre_get_postsを使おう【追記あり】【報告あり】 | notnil creation weblog

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

Joruri CMSに入力フィールドを追加

Joruriというか、Ruby on Railsを始めたばかりのど素人のメモ。

Joruri CMSには残念ながら「カスタムフィールド」という機能が存在しません。

ということで任意の入力フィールドを追加する場合、データベースから操作する必要があります。

ちなみに自分が使っているJoruri CMSのバージョンは「1.3.2」です。

以下、「コンテンツ種別:記事」の、ページ新規作成・編集画面に、「備考」入力フィールドを追加してみた手順です。

  1. DBの「article_docs」テーブルに「remark」カラムを追加。
    カラム名:remark
    種別:TEXT
    NULL:チェック
  2. app/views/article/admin/docs/_form.html.erb
    を編集。
    「内容」フィールドの下あたりにこんな感じで追加。

    <tr>
    <th colspan="1">備考</th>
    <td colspan="3"><%= f.text_area :remark, :rows => '3', :class => ' remark ', :style => 'width: 500px;' %></td>
    </tr>
    
  3. apache再起動。(これしないと反映されない)
  4. app/views/article/public/node/docs/show.html.erb
    を編集。
    表示させたい部分に、

    <%= @item.remark %>
    

    と記述する。

  5. apache再起動。

apacheを再起動させる理由は、そうしないとviewの編集内容が反映されないからですが、キャッシュを削除する方法さえわかれば、わざわざapacheを再起動させる必要はないかと思います。
これについてはまだ調査中。
viewレベルの変更でapache再起動はさすがにしんどい^^;

まだ開始したばかりなので、いろいろと分かってない部分がありますが、なんとか任意のフィールドを追加したり、カスタマイズできそうですね。

【追記 2013/06/27】

キャッシュの削除方法分かりました。

config/environments/production.rb

config.cache_classes
config.action_controller.perform_caching
config.action_view.cache_template_loading

をすべてfalseにすると、再起動させる必要が無くなり、viewやcontrollerの更新がすぐに反映されます。

config.cache_classes = false
config.action_controller.perform_caching = false
config.action_view.cache_template_loading = false

こちらのサイトを参考にさせていただきました。

mongrelを再起動させずにRailsアプリのコードの修正を反映させる日々の階段を。 - このブログは証明できない。

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

入力フィールドを複数追加できるタイプのカスタムフィールドを扱う際の注意点

Custom Field Templateプラグインを使用すると、投稿時に入力フィールドを任意に増やせるカスタムフィールドを作ることが出来ます。

↓こういうの

WS000013

追加ボタンを押すことで、フィールドを増やしていけるわけですが、入力はともかく、取り出し方には注意が必要です。

通常、カスタムフィールドを取り出す場合

<?php $meta_values = get_post_meta($post_id, $key, $single); ?>

$post_id:投稿ID
$key:カスタムフィールド名
$single:取得方法。配列ならfalse、1つめだけならtrue

というふうに取り出すのですが、これで取り出すと、複数フィールドの並び順がばらばらで取得されてしまいます。

しかも投稿を編集するたびに並び順が変わるという困った状態に。

なぜ上から順に取り出してくれない・・・

ということで、検索したところ、こちらの方法で解決しました。

Custom Field Template(カスタムフィールドテンプレート) | WordPress 編

複数フィールドを上から順に取り出す場合はsqlをつかって取り出します。

複数フィールドのカスタムフィールド名が「Hoge」とした場合


<?php
global $wpdb;
$query = "SELECT * FROM ".$wpdb->postmeta." WHERE post_id = ".get_the_ID()." AND meta_key = 'Hoge' ORDER BY meta_id ASC";
$cf = $wpdb->get_results($query, ARRAY_A);

$Hoge = array();
if($cf){
foreach($cf as $row){
$Hoge[] = $row['meta_value'];
}
}
?>

これで複数フィールドの並び順(meta_id)順でデータを取得することができます。

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

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