1. TOP
  2. Wordpress

[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

[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
    }
});

[Wordpress] post_date_column_statusとpost_date_column_timeというフィルターフック

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

どうでも良い事だけどpost_date_column_statusとpost_date_column_timeというフィルターフックはあるのにpost_title_columnみたいなフィルターフックがwp_posts_list_tableにはない。独自項目の追加にはmanage_posts_columnsとかを使わなきゃならないのがややこしい。

function post_date_column_status_func( $status ){
	if ( !is_admin() || 'registration' !== get_current_screen()->post_type || !current_user_can('list_users')) return;
	return '';
}
add_filter( 'post_date_column_status', 'post_date_column_status_func');

function post_date_column_time_func( $t_time ){
	if ( !is_admin() || 'registration' !== get_current_screen()->post_type || !current_user_can('list_users')) return;
	return $t_time;
}
add_filter( 'post_date_column_time', 'post_date_column_time_func');

[Wordpress] wp_add_inline_script が誤って呼び出されちゃう問題

カテゴリ:
Web
Wordpress
| トラックバック(0)
投稿者:yo yo
Notice: wp_add_inline_script が誤って呼び出されました。<script> タグを wp_add_inline_script() に渡さないでください。 詳しくは WordPress のデバッグをご覧ください。 (このメッセージはバージョン 4.5.0 で追加されました) in ./wp-includes/functions.php on line 4139
function my_admin_script() {
	if ( ! is_admin() ){
		return;
	}
	ob_start();
?>
	<script type="text/javascript"> // ← これがいらない
		// javascriptの処理ずらずらー
	</script> // ← これがいらない
<?php
	$js = ob_get_contents();
	ob_end_clean();
	wp_add_inline_script( 'jquery-core', $js );
}
add_action( 'admin_enqueue_scripts', 'my_admin_script' );

wp_add_inline_scriptを使って<head />内へインラインスクリプトを追加する時、そもそも<script />が自動で追加されるので<script />の記述を書く必要がない。

ページの先頭に戻る