1. TOP
  2. Web

[Gmap] ストリートビューの360度を撮影をする為に必要そうなモノ

カテゴリ:
Web
その他
| トラックバック(0)
投稿者:yo yo

ストリートビュー(インドアビュー)の撮影って需要在りそうだなと思ったのでメモ。

  • APS-Cサイズの一眼レフカメラ
  • 180度の画角で撮影できる魚眼レンズ
  • 三脚
  • レリーズ(リモートスイッチ)
  • 雲台とレベリングユニット

180度の画角で撮影した画像を4枚(左右前後)つなげる必要がある。この作業が面倒ならば360度カメラ(リコーのシータとか)を買う必要があるが画質が下がるか、金がかかる。

撮影1スポットおいくら~万円の相場を見るととても美味しそうな仕事である。が、金をかけてインドアビューを撮影したからと言って撮影費用に対する効果はあるのか疑問が残る。これが今一つ広まらない理由なのか。

ウェブに対する意識が高い人なら「良さそうかな?」で依頼してくると思う。しかし、根拠となる数字との因果関係を説明しきれない。なので、そうでない人への説得ってほぼ不可能に近いんじゃなかろうか。私の実力ではこれを積極的に売りに行くと悪徳商法みたいになってしまいそう。

[Wordpress] REST APIを無効化

カテゴリ:
Web
Wordpress
| トラックバック(0)
投稿者:yo yo

function.php

/* **************************************************************************
REST API 無効化 htaccessも参照の事
************************************************************************** */
function DRA_only_allow_logged_in_rest_access( $access ) {
    if( ! is_user_logged_in() ) {
        return new WP_Error( 'rest_cannot_access', __( 'Only authenticated users can access the REST API.', 'disable-json-api' ), array( 'status' => rest_authorization_required_code() ) );
    }
    return $access;
}
add_filter( 'rest_authentication_errors', 'DRA_only_allow_logged_in_rest_access' );

.htaccess

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
######
RewriteCond %{REQUEST_URI} !^/wp-json/
RewriteCond %{REQUEST_URI} !^/oembed/
######
RewriteRule . /index.php [L]


# END WordPress

[js] HTMLのimgタグを修正せずに別の画像がある場合は置き換える

カテゴリ:
Web
javascript
| トラックバック(0)
投稿者:yo yo
// JavaScript Document
jQuery(function(){
	jQuery("img").each(function(){
		var target = jQuery(this);
		var src = target.attr("src");
		var src_split = src.split(/(?=\.[^.]+$)/);
		var src_sp = src_split[0] + '-sp' + src_split[1];
		target.attr('data-src', src);
        // ここの部分は
		var img = new Image();
		img.src = src_sp;
		img.onload = function() {
			target.attr('data-sp-src', src_sp);
		}
        //
        /* こういう書き方もできる
            var x = new XMLHttpRequest();
            x.open("HEAD", src_sp, false);
            x.send(null);
            x.status; // 404 or 他を判定
        */
	});
	
	// カスタムイベントで画像切り替えのコードとか
	
});

「ウェブサイトのレスポンシブ化対応などで既存のHTMLを修正したくない。けど、スマホ向け画像があったらそっちを表示させたい。」とかいう場合に使う。Javascriptで画像の有無を調べてある場合はそちらを表示、ない場合は既存を表示させる。

[Wordpress] 管理画面のコメントサブメニューに独自リンクと機能を追加

カテゴリ:
Web
Wordpress
| トラックバック(0)
投稿者:yo yo

function.php

/* **************************************************************************
管理画面のメニュー->コメントにCSV出力を追加
*************************************************************************** */
add_action('admin_menu', 'remove_menus');
function remove_menus () {
	global $submenu;
	$submenu["edit-comments.php"][] = array(
		'CSV出力',
		'read',
		get_template_directory_uri() . '/export_comment.php' // 例えばコメントデータをCSV出力する機能
	);
}

[Wordpress] ワードプレス内でAjaxを使う

カテゴリ:
Web
Wordpress
| トラックバック(0)
投稿者:yo yo

うん番煎じだって話だけど、コピペ用として書いているだけなので詳しくは公式リファレンスを見てください。

function.php

// ajax enqueue
add_action( 'wp_enqueue_scripts', 'ajax_enqueue' );

// ajax function
add_action( 'wp_ajax_' . 'ajax_action', 'ajax_js' );
add_action( 'wp_ajax_nopriv_' . 'ajax_action', 'ajax_js' );

/**
 * jsファイルを読み込む
 */
function ajax_enqueue() {
	$handle = 'ajax_handle';
	$action = $handle . '_action';
	
	// 読み込むスクリプトファイル(※依存関係:jquery)
	wp_enqueue_script( $handle, esc_url( get_template_directory_uri() ) . '/js/ajax.js', array( 'jquery' ) );
	wp_localize_script( $handle, $handle, array(
		'api' => admin_url( 'admin-ajax.php' ),
		'action' => $action,
		'nonce' => wp_create_nonce( $action )
	) );
}

/**
 * ajax action
 */
function ajax_js() {
	$handle = 'ajax_handle';
	$action = $handle . '_action';

	// NONCEチェック
	$nonce = isset( $_POST['nonce'] ) ? $_POST['nonce'] : '';
	if ( ! wp_verify_nonce( $nonce, $action ) ) {
		status_header( '403' );
		$data = 'Forbidden';
	}
	// クエリでデータを取り出す
	$query = new WP_Query();
	
	try {
			//JSON形式で出力する
			header('Content-Type: application/json');
			wp_send_json( $query );
			exit;
	}
	catch (PDOException $e){
			//例外処理
			die('Error:' . $e->getMessage());
	}
}

ajax.js

jQuery.ajax({
    type: 'POST',
    dataType:'json',
    url: ajax_handle.api,
    data:{
        nonce: ajax_handle.nonce,
        action: ajax_handle.action
    },
    success:function(data) {
    	console.log(data); // json data
    }
});
ページの先頭に戻る