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

プラグインの作り方 ウィジェットの追加

スポンサーリンク

ウィジェットで選ぶパーツを登録する。
//------------------------------------------------------------------------------
// ウィジェットの追加
//------------------------------------------------------------------------------
add_action('widgets_init', 'WP_Widget_thumb_boxInit');	// 詳しいことは以下でという
//------------------------------------------------------------------------------
// ウィジェット関数の登録
//------------------------------------------------------------------------------
function WP_Widget_thumb_boxInit() {
	register_widget('WP_Widget_ImgPostA');
	register_widget('WP_Widget_BoxPostA');
	register_widget('WP_Widget_CommonPostA');
	register_widget('WP_Widget_ImgRankingA');
}       
この例では、4つのウィジェットを登録している。
 
ウィジェットのクラス本体の基本形
//==============================================================================
class WP_Widget_ImgPostA extends WP_Widget
//==============================================================================
{
	//--------------------------------------------------------------------------
	// 定義
	//--------------------------------------------------------------------------
	function WelcartMyBox_widget() {
		$widget_ops = array(
			'classname' => 'WelcartMyBox_widget',	// クラス名 とりあえずぶつからない名前
			'name' => __('Welcart My Box'),			// ウィジェット選択での表示名
			'description' => __('Welcart My Box')	// ウィジェット選択での説明文
		);
		// Wiget Option 用 ウィンドサイズ array() とするとデフォルトサイズ
		$control_ops = array('width' => 400, 'height' => 350);
		// WigetID , Wiget Title(nameで指定済み) , wiget_ops , control_ops
		parent::__construct(
			'WelcartMyBox_widget',	// クラス名
			__('Text'),				// 決まり
			$widget_ops,			// 表示名等
			$control_ops			// ウィジェットウィンドウ属性
		);

	}
	//--------------------------------------------------------------------------
	// 設定値の書き込み
	//--------------------------------------------------------------------------
	function update($new_instance, $old_instance) {
		// processes widget options to be saved
		$instance = $old_instance;
		$instance['title'] = strip_tags($new_instance['title']);
		$instance['text' ] = $new_instance['text' ];
		$instance['templ'] = $new_instance['templ'];
		$instance['colmn'] = $new_instance['colmn'];
		$instance['order'] = $new_instance['order'];
		return $instance;
	}
	//--------------------------------------------------------------------------
	// 設定フォーム (ウィジェットをサイドバーでの入力フォーム
	//--------------------------------------------------------------------------
	function form($instance) {
		// ---------------------------------------------------------------------
		// 設定値 取り込み
		// ---------------------------------------------------------------------
		$instance 
			= wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '' ) );
		$title = strip_tags( $instance['title']);
		$text  = esc_textarea($instance['text']);
		$templ = strip_tags( $instance['templ']);
		$colmn = strip_tags( $instance['colmn']);
		$order = strip_tags( $instance['order']);
?>
		// ---------------------------------------------------------------------
		// 設定フォーム表示
		// ---------------------------------------------------------------------
		<p><label for="<?php echo $this->get_field_id('title'); ?>">
			<?php _e('Title:'); ?></label>
		<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>"
			name="<?php echo $this->get_field_name('title'); ?>"
			type="text" value="<?php echo esc_attr($title); ?>" /></p>

		<p><label for="<?php echo $this->get_field_id('title'); ?>">
			<?php _e('表示前コメント:'); ?></label>
		<textarea class="widefat" rows="2" cols="20" 
			id="<?php echo $this->get_field_id('text'); ?>"
			name="<?php echo $this->get_field_name('text'); ?>">
			<?php echo $text; ?></textarea></p>

		<p><label for="<?php echo $this->get_field_id('templ'); ?>">
			<?php _e('テンプレート:'); ?></label>
		<input class="widefat" id="<?php echo $this->get_field_id('templ'); ?>" 
			name="<?php echo $this->get_field_name('templ'); ?>" 
			type="text" value="<?php echo esc_attr($title); ?>" /></p>

		<p><label for="<?php echo $this->get_field_id('colmn'); ?>">
			<?php _e('表示カラム:'); ?></label>
		<input class="widefat" id="<?php echo $this->get_field_id('colmn'); ?>" 
			name="<?php echo $this->get_field_name('colmn'); ?>" 
			type="text" value="<?php echo esc_attr($title); ?>" /></p>

		<p><label for="<?php echo $this->get_field_id('order'); ?>">
			<?php _e('表示データ:'); ?></label>
		<input class="widefat" id="<?php echo $this->get_field_id('order'); ?>" 
			name="<?php echo $this->get_field_name('order'); ?>" 
			type="text" value="<?php echo esc_attr($title); ?>" /></p>

<?php
	}
	//--------------------------------------------------------------------------
	// 表示本体
	//--------------------------------------------------------------------------
	function widget($args, $instance) {
		//----------------------------------------------------------------------
		// 設定値の取り込み
		//----------------------------------------------------------------------
		extract($args);
		$title = apply_filters( 'widget_title' , 
			empty( $instance['title'] ) ? '' : $instance['title'], $instance, $this->id_base );
		$text  = apply_filters( 'widget_text'  , 
			empty( $instance['text']  ) ? '' : $instance['text'] , $instance );
		$order = apply_filters( 'widget_order' , 
			empty( $instance['templ']  ) ? '' : $instance['templ'] , $instance );
		$templ = apply_filters( 'widget_templ' , 
			empty( $instance['colmn']  ) ? '' : $instance['colmn'] , $instance );
		$colmn = apply_filters( 'widget_colmn' , 
			empty( $instance['order']  ) ? '' : $instance['order'] , $instance );
		//----------------------------------------------------------------------
		// 決まり
		//----------------------------------------------------------------------
		echo $before_widget;
		if ( !empty( $title ) ) { echo $before_title . $title . $after_title; } ?>
			<div class="textwidget"><?php echo !empty( $instance['filter'] ) ? wpautop( $text ) : $text; ?></div>
		<?php
		//----------------------------------------------------------------------
		// 表示ボディ
		//----------------------------------------------------------------------
		echo WelcartMyBox_View($order,$templ,$colmn);
		//----------------------------------------------------------------------
		// 決まり
		//----------------------------------------------------------------------
		echo $after_widget;
	}
}

スポンサーリンク

関連記事

スポンサーリンク

よく使うタグ

・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:ユーザー入力補助

カテゴリー

FB 広告 最適化~グーグルアナリティクスとサーチコンソールの連動のさせかた(必要な分だけ)

FB 広告 最適化~グーグルアナリティクスとサーチコンソールの連動のさせかた(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルアナリティクスとサーチコンソール。別にグーグルのアナリティクス、サーチコンソールでなくてもアクセス解析はできるんだけど、グーグルはユーザー囲

FB 広告 最適化~グーグルアナリティクスの使い方(必要な分だけ)

FB 広告 最適化~グーグルアナリティクスの使い方(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルアナリティクス。別にグーグルのアナリティクスでなくてもアクセス解析はできるんだけど、グーグルはユーザー囲い込みの為他のアクセス解析では見せな

FB 広告 最適化~グーグルサーチコンソールの使い方(必要な分だけ)

FB 広告 最適化~グーグルサーチコンソールの使い方(必要な分だけ) FB 広告 最適化にあたって必要になってくるツールがグーグルサーチコンソール。別にグーグルのサーチコンソールでなくてもいいんだけど、グーグルはユーザー囲い込みの為他のアクセス解析では見せなくしたキーワ

FB 広告 最適化~グーグルのアクセス解析の基本

FB 広告 最適化~グーグルのアクセス解析の基本 FB広告を最適化するためには、アクセス解析が重要なカギを握ります。FB広告から当該ページに飛んでくるときURLにオプションを付けることができます。このURLにつけたオプションを使ってどの広告から、どん

jQuery ボタンを押しても反応しない

jQuery ボタンを押しても反応しない jQuery の click イベントを使ってボタンを押したら alert を表示する簡単な仕様なのになにも反応しない。一瞬はまってしまうことって・・・ありますよね?例えば、こう書きます。popup.

WP パーマリンク リダイレクト インターナルサーバーエラー

WP パーマリンク リダイレクト インターナルサーバーエラー WP パーマリンクのリダイレクトがインターナルサーバーエラーを起こすようになった。ユーザーさんのサイトなので「なにをしたか」わからない。WP パーマリンク リダイレクト インターナルサーバーエラーのい