HTML,CSS,PHP,ワードプレスカスタマイズ 技術情報資料

カスタムフィールドを使うプラグインひな形

スポンサーリンク

entry_meta を他の関数とぶつからないように別の名前で置換してから使います
/************** APPEND YUZUMARU **************
    entry_meta を 自分のファンクション名に置き換える 
    ex entry_meta_ -> my_meta_               */
/*-------------------------------------------*/
/* ファンクションサブメニューページのタイトル*/
/*-------------------------------------------*/
$entry_meta_sname ="entry_meta";
/*-------------------------------------------*/
/* ファンクションプルダウン表示時のタイトル  */
/*-------------------------------------------*/
$entry_meta_pname ="エントリーメタ";
/*-------------------------------------------*/
/* ファンクションスラッグ名                  */
/*-------------------------------------------*/
$entry_meta_slagname="entry_meta_slag";
/*-------------------------------------------*/
/* ENTORYの入力領域作成	エントリー項目を設定 */
/*-------------------------------------------*/
$entry_meta_boxes =	array(
	"ページディスクリプション" => array(
		"name" => "headtitle",
		"std" => "",
		"title" => "ページディスクリプション",
		"titlesub" => "",
		"type" => "checkbox",
		"description" => "ページディスクリプションを非表示にする"),

	"ヘッダ画像URL" => array(
		"name" => "headimg",
		"std" => home_url().'/',
		"title" => "ヘッダ画像 URL",
		"titlesub" => "980x250推奨 好きなサイズでOK httpで始まらない場合:なし 空欄:サイトタイトルバナー",
		"type" => "text",
		"description" => "▲ヘッダ画像を入力"),

	"グローバルナビ" => array(
		"name" => "gnavs",
		"std" => "",
		"title" => "グローバルナビ",
		"titlesub" => "",
		"type" => "checkbox",
		"description" => "グローバルナビを表示しない"),

	"ソーシャルボタン" => array(
		"name" => "snssw",
		"std" => "",
		"title" => "ソーシャルボタン",
		"titlesub" => "",
		"type" => "checkbox",
		"description" => "ソーシャルボタンを表示しない"),

	"日付付加" => array(
		"name" => "datebox",
		"std" => "",
		"title" => "投稿日表示",
		"titlesub" => "",
		"type" => "checkbox",
		"description" => "投稿日をつけない"),

	"サイドボックスタイトル" => array(
		"name" => "sideboxtitle",
		"std" => "",
		"title" => "サイドボックスタイトル",
		"titlesub" => "見出しタグなしで表示されるのでタグは自分で付ける。<h4 class=テーマ標準>推奨。",
		"type" => "text",
		"description" => "▲サイドボックスタイトルを設定"),

	"サイドボックス" => array(
		"name" => "sidebox",
		"std" => "",
		"title" => "サイドボックス",
		"titlesub" => "",
		"type" => "textarea",
		"description" => "▲サイドボックスのリンク集を設定")

);
/* ここから下は触らなくても大丈夫 (「設定」のところの「エントリーページカスタマイズ」ぐらいかな?)*/
/* function body
	エントリーの表示
*/
function entry_meta_boxes() {
	global $post, $entry_meta_boxes;
	foreach($entry_meta_boxes as $meta_box) {
		$meta_box_value = get_post_meta($post->ID, $meta_box['name'], true);
		if($meta_box_value == "")
			$meta_box_value = $meta_box['std'];
		if($meta_box['type']=='text'){
			echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
			echo'<span style="font-weight: bold;">■'.$meta_box['title'].' </span>'.$meta_box['titlesub'];
			echo'<textarea name="'.$meta_box['name'].'" cols="54" rows="1"/>'.$meta_box_value.'</textarea><br />';
//			echo'<p><label for="'.$meta_box['name'].'">'.$meta_box['description'].'</label></p>';
//			echo'<p>&nbsp;</p>';
			echo'<br />';
		
		}elseif($meta_box['type']=='file'){
			echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
			echo'<span style="font-weight: bold;">■'.$meta_box['title'].' </span>'.$meta_box['titlesub'];
			echo'<input type="file" name="'.$meta_box['name'].'" value="'.$meta_box_value.'" size="54" /><br />';
//			echo'<p><label for="'.$meta_box['name'].'">'.$meta_box['description'].'</label></p>';
//			echo'<p>&nbsp;</p>';
			echo'<br />';

		}elseif($meta_box['type']=='textarea'){
			echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
			echo'<span style="font-weight: bold;">■'.$meta_box['title'].' </span>'.$meta_box['titlesub'].'<br/>';
			echo'<textarea name="'.$meta_box['name'].'" cols="54" rows="5"/>'.$meta_box_value.'</textarea><br />';
//			echo'<p><label for="'.$meta_box['name'].'">'.$meta_box['description'].'</label></p>';
//			echo'<p>&nbsp;</p>';
			echo'<br />';

		}elseif($meta_box['type']=='checkbox'){
			echo'<input type="hidden" name="'.$meta_box['name'].'_noncename" id="'.$meta_box['name'].'_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';
			echo'<span style="font-weight: bold;">■'.$meta_box['title'].' </span>'.$meta_box['titlesub'].'<br />';
			echo'<input type="checkbox" name="'.$meta_box['name'].'" value="checked" '.$meta_box_value.'>'.$meta_box['description'].'<br />';
//			echo'<p>&nbsp;</p>';
			echo'<br />';
		}
	}
}

/* 設定 */
function create_entry_meta_box() {
	global $theme_name;

	if ( function_exists('add_meta_box') ){
		add_meta_box( 'work-entry_meta-boxes', 
		'エントリーページカスタマイズ', 
		'entry_meta_boxes', 'post', 'normal', 'high' );

		add_meta_box( 'work-entry_meta-boxes', 
		'エントリーページカスタマイズ', 
		'entry_meta_boxes', 'page', 'normal', 'high' );
	}
}

/* 入力内容を保存 */
function entry_meta_save_postdata( $post_id ) {
	global $post, $entry_meta_boxes;
	foreach($entry_meta_boxes as $meta_box) {
	// Verify
		if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) {
			return $post_id;
		}

		if ( 'page' == $_POST['post_type'] ) {
			if ( !current_user_can( 'edit_page', $post_id ))
				return $post_id;
		} else {
			if ( !current_user_can( 'edit_post', $post_id ))
				return $post_id;
		}

		$data = $_POST[$meta_box['name']];

		if(get_post_meta($post_id, $meta_box['name']) == "")
			add_post_meta($post_id, $meta_box['name'], $data, true);
		elseif($data != get_post_meta($post_id, $meta_box['name'], true))
			update_post_meta($post_id, $meta_box['name'], $data);
		elseif($data == "")
			delete_post_meta($post_id, $meta_box['name'], get_post_meta($post_id, $meta_box['name'], true));
	}
}
add_action('admin_menu', 'create_entry_meta_box');
add_action('save_post', 'entry_meta_save_postdata');
/************** /APPEND YUZUMARU **************/
/************** APPEND YUZUMARU **************/
// 設定画面
add_action('admin_menu', 'entry_meta_add_pages');
// 上のフックに対するaction関数(細かいことを説明しているところ)
//------------------------------------------------------------------------------
// 設定画面登録
//------------------------------------------------------------------------------
function entry_meta_add_pages() {
	// 設定メニュー(管理メニュー)下にサブメニューを追加:
	add_options_page(
		'Plugin Title',		// 1.Pluginの設定画面での見出し
		'Select Name',		// 2.WP設定メニューでの表示名
		8,					// 3.管理者権限(誰が触れるよ。基本8でOK)
		__FILE__,			// 4.WP内でぶつからない名前。面倒なら__FILE__でOK.高度な使い方は後
		'entry_meta_options_page'	// 5.設定モジュール名
	);
	
	// 管理メニュー下にサブメニューを追加
	add_management_page($entry_meta_sname, $entry_meta_pname, 8, $entry_meta_slagname, 'mt_manage_page');
}
function entry_meta_options_page(){
	//--------------------------------------------------------------------------
	// 準備
	//--------------------------------------------------------------------------
		:
	//--------------------------------------------------------------------------
	// put
	//--------------------------------------------------------------------------
	if (isset($_POST['update_option'])) {
		update_option('entry_meta_value'   ,$_POST["entry_meta_value"]);
	}
	//--------------------------------------------------------------------------
	// get
	//--------------------------------------------------------------------------
	$entry_meta_value= get_option('entry_meta_value');
		:	
	//--------------------------------------------------------------------------
	// 表示前準備
	//--------------------------------------------------------------------------
		:	
	//--------------------------------------------------------------------------
	// 表示
	//--------------------------------------------------------------------------
	echo <<<EOD
	<form name="form" method="post" action="">
		サイドボックスワンタッチ挿入データ<br />
		<textarea name="entry_meta_value" cols="40" rows="5">$entry_meta_value</textarea>
		:
		<input type='submit' name='update_option' class='buttonprimary'>
	</form>
	
EOD
}
/************** /APPEND YUZUMARU **************/

スポンサーリンク

スポンサーリンク

よく使うタグ

・float クリア
<br clear="all"><div style="clear:both;" class="clearfix"></div>
・角丸め
round-radius
border-radius:5px; -webkit-border-radius:10px; -moz-border-radius:10px;
・div box
overflow:scroll;min-width:300px;max-width:300px;min-height:300px;max-height:300px;
・TEXTAREAリサイズ
resize: vertical;
・サイトURL
home_url() // http://…
if(site_url()==home_url){
$shorturl_yuzu_path = substr(ABSPATH,0,strpos( ABSPATH, substr(site_url(),strlen(home_url()) ) ) ).’/’;
}else{
$shorturl_yuzu_path = ABSPATH.’/’;
}
// /var/…
・WP HOME URL
site_url() // http://…/wp
ABSPATH // /var/…/wp
・プラグイン(自分のDIR追加必要)
plugins_url() // http://…/plugins
WP_PLUGIN_URL // http://…/plugins
WP_PLUGIN_DIR // /var/…/plugins
・使用中のテーマ
get_template_directory_uri() // http://…/theme/xx
get_template_directory() // /var/…/theme/xx
・wp-content
content_url() // http://…/wp-content
WP_CONTENT_DIR // /var/…/wp-content
・画像URLからDIR変換
$pctdir=str_replace(content_url(), WP_CONTENT_DIR,$pcturl);
・パス名分解
$pathData = pathinfo($file);
echo $pathData["dirname"]; // /var/~
echo $pathData["filename"]; // xxx
echo $pathData["extension"]; // txt
echo $pathData["basename"]; // xxx.txt
・画像サイズ
list($width,$height) = getimagesize($url);
if(has_post_thumbnail()){
$thumbnail_id = get_post_thumbnail_id();
$thumbnail_img = wp_get_attachment_image_src( $thumbnail_id , ‘full’ );
$src = $image[0]; //url
$width = $image[1]; //横幅
$height = $image[2]; //高さ
・画像サイズ比率
list($src_w,$src_h) = getimagesize($file);
$dst_w = 600;$dst_h = 0;
$dst_h = ($dst_w!=0)?(intval(($src_h*$dst_w)/$src_w )):(($dst_h!=0)?(intval(($src_w*$dst_h)/$src_h)):0);
・疑似要素順
link visited hover active


特殊文字
シングルクォート : &#39;
ダブルクォート : &quot;
WP設定内表示前処理(htmlタグ許可項目)
$str = str_replace(‘<','&lt;' ,$str);
$str = str_replace(‘>’,’&gt;’ ,$str);
$str = str_replace(‘\”‘,’&quot;’,$str);
$str = str_replace(“\'”,’&#39;’ ,$str);
WO設定項目表示前処理(htmlタグ許可項目)
$str = str_replace(‘\”‘,'”‘,$str);
$str = str_replace(“\'”,”‘”,$str);
・テーマ
get_theme_root_uri()
get_theme_root()
・WP 情報
get_bloginfo( $show )
・Wp config FTP 情報 設置
define( ‘FTP_HOST’, ‘host’ );
define( ‘FTP_USER’, ‘id’ );
define( ‘FTP_PASS’, ‘pw’ );
define( ‘FTP_SSL’, false );
弾に使う
placeholder:ユーザー入力補助

カテゴリー

flexbox インストールなど面倒なことなしにDIV BOX を横に並べるクラス

flexbox インストールなど面倒なことなしにDIV BOX を横に並べるクラス flexbox は、div の box を横に並べるためのブラウザに標準装備されてるクラス。乱暴な言い方すればそういうことです。現場では細かいことはどうでもよくて、とにかく簡単に DIV BOX を横

vba タスクに IE が残る

vba タスクに IE が残る vba タスクに IE が残る。VBAでブラウザ経由でサイトのページの情報を拾い上げる技は結構使いますよね?私だけ?wwwそうすると、なぜかvba タスクに IE が残っていて、繰り返し利用するとどん

wp datepicker 特定の項目で動かない。

wp datepicker 特定の項目で動かない。 ワードプレスでつかえる datepicker は、とっても簡単につかえて便利なライブラリーです。javascript は、なれないとデバッグに時間がかかり気持ち的にすごく敷居が高い気がしますがわかって

プラグインの管理画面でHTMLの入力を許すフィールドの扱い方

プラグインの管理画面でHTMLの入力を許すフィールドの扱い方 ワードプレスのプラグインを書いていると、HTMLタグを入力できるフィールドを作りたくなりますよね?例えば、ページにデータを表示するときにその書式を入力さえるとか。例えば、これはワードプレスのプラグイン

ワードプレスのフッターにある jQueryの読み込みをヘッダーで出力させる

ワードプレスのフッターにある jQueryの読み込みをヘッダーで出力させる ワードプレスのフッターにあるjQueryの読み込みをヘッダーで出力させる必要ができました。simplecity の後継ともいわれる ワードプレスのテーマ cocoon のカスタマイズです。cocoon

ワードプレスで jQuery の後に script を読み込ませる方法(動的スクリプトもOK)

ワードプレスで jQuery の後に script を読み込ませる方法(動的スクリプトもOK) ワードプレスで jQuery の後に script を読み込ませる方法、これは動的スクリプトも可能な方法です。ワードプレスのプラグインで動くシステムを開発していたところ、ユーザーインターフェイスでどう