JavaScript URLのパラメータを取得、設定する

JQueryで、URLにパラメータを追加する必要があったので、パラメータを取得、設定する関数を用意しました。

下記例では、class="addPrm" の要素をクリックすると、name=tanaka&age=54というパラメータをURLに付加して遷移する、という感じです。

$( '.addPrm' ).on( 'click', function(){
        var params = getParameter();
        params['name'] = 'tanaka';
        params['age'] = 54;
        window.location.href = setParameter(params);
    });
 
    //パラメータを設定したURLを返す
    function setParameter( paramsArray ) {
        var resurl = location.href.replace(/\?.*$/,"");
        for ( key in paramsArray ) {
            resurl += (resurl.indexOf('?') == -1) ? '?':'&';
            resurl += key + '=' + paramsArray[key];
        }
        return resurl;
    }
 
    //パラメータを取得する
    function getParameter(){
	var paramsArray = [];
	var url = location.href; 
	parameters = url.split("#");
	if( parameters.length > 1 ) {
		url = parameters[0];
	}
	parameters = url.split("?");
	if( parameters.length > 1 ) {
		var params	 = parameters[1].split("&");
		for ( i = 0; i < params.length; i++ ) {
		   var paramItem = params[i].split("=");
		   paramsArray[paramItem[0]] = paramItem[1];
		}
	}
	return paramsArray;
    };

getParameter() で現在のページのURLパラメータを取得します。

setParameter() で任意のパラメータ(例ではnameとage)を追加したURLを返します。

参考になったサイト:http://moriroom.my.coocan.jp/site1/?p=1581

追記:2016/02/16
パラメータのあとに#が付いている場合に対応するように、getParameter()を修正

0

WordPress 投稿や固定ページを追加したり削除する

プラグインなどから、プログラムで投稿や固定ページを追加するには、wp_insert_post() を使います。

$post = array(
     'post_name' => $slug ,
     'post_title' => $title,
     'post_content' => $content,
     'post_status' => 'publish',
     'post_type' => 'page',
 );
wp_insert_post($post);

投稿や固定ページをゴミ箱に入れるには、wp_delete_post() を使います。

wp_delete_post($post_id);

投稿や固定ページを完全に削除するには、wp_delete_post() の第二パラメータにTrueを追加。

wp_delete_post($post_id , true);
0

WordPressでプラグインなどからユーザー登録する方法

ユーザーの登録するときは、 wp_insert_user() 更新するときは、 wp_update_user() を使います。

        $userdata = array(
            'first_name'    =>  '菊池',
            'last_name'    =>  '桃子',
            'user_login'  =>  'momoko',
            'user_email'    =>  'momoko@email.com',
            'role'    =>  'subscriber',
            'user_pass'   =>  'password'
        );
        $user_id = username_exists( 'momoko');
        if ( $user_id ) {
            $userdata['ID'] = $user_id;
            $user_id = wp_update_user( $userdata );
        }else{
            $user_id = wp_insert_user( $userdata );
        }

username_exists('ユーザー名') で、既に登録済みかを確認できます。
存在していたら、そのユーザーID、 存在してなければ、nullになります。

rorleについて、情報収集に手間取ったのでメモ

管理者: administrator
編集者: editor
寄稿者: author
購読者: subscriber

かならず半角小文字でいれる。(下記参考にしたがって、一文字目を大文字にしたらうまく行きませんでした。)
参考:https://codex.wordpress.org/Roles_and_Capabilities#Administrator

0

WordPressでページの種類ごとに表示する内容を変える

WordPressでのページの種類ごとの分岐

if ( is_single() ) :
elseif ( is_single( 125 ) ) :
elseif ( is_single( 125, 'postslug', '投稿タイトル' ) ) :
//投稿ページ
//引数は、投稿ID、投稿タイトル、slug のいずれかか、それらを含めた配列
elseif (is_page()) :
elseif (is_page( 10 )) :
elseif (is_page( 10, 'pageslug', '固定ページタイトル' )) :
//固定ページ
//引数は、固定ページID、固定ページタイトル、slug のいずれかか、それらを含めた配列
elseif (is_category()) :
elseif (is_category(13)) :
elseif (is_category(array( 125, 'postslug', '投稿タイトル' ))) :
//カテゴリーページ
//引数は、カテゴリーID、カテゴリー名、slug のいずれかか、それらを含めた配列
elseif (is_archive()) :
//アーカイブページ
elseif (is_post_type_archive()) :
elseif (is_post_type_archive('customposttype')) :
elseif (is_post_type_archive( array( 'apples' , 'oranges' )) :
//カスタムタクソノミーのアーカイブページ
//引数はカスタムタクソノミーのpost_type またはその配列
elseif (is_tax()) :
elseif (is_tax( 'taxonomy-slug' )) :
elseif (is_tax( 'taxonomy-slug' , array( 5 , 'tarm-slug' , 'タームの名前' )) :
//カテゴリー、投稿タグ以外(カスタムタクソノミー?)のアーカイブのとき
//第1引数は、タクソノミーのslugまたはその配列
//第2引数は、タームID、ターム名、タームのslug のいずれかか、それらを含めた配列
//ちなみに、タームはタクソノミーやカテゴリに属する一つ一つの分類のこと。
elseif (is_day()) :
//日別のアーカイブ
elseif (is_month()) :
//月別のアーカイブ
elseif (is_year()) :
//年別のアーカイブ
elseif (is_404()) :
//404ページ
elseif (is_front_page()) :
//フロントページ
//管理画面の設定で、表示設定→フロントページの表示 で「最新の投稿」を選択しているときは、最新の投稿ページが表示されている場合
//「固定ページ」を選択しているときは、「フロントページ」に指定したページが表示されている場合。
elseif (is_home()) :
//ホームページ(トップページのこと)
//管理画面の設定で、表示設定→フロントページの表示 で「固定ページ」+「フロントページ」に指定したページが表示されている場合。
elseif (is_search()) :
//検索結果
elseif (is_attachment()) :
//アップロードした画像などのメディアを表示しているとき
elseif (is_singular()) :
elseif (is_singular('post_types')) :
//is_page、is_single、is_attachment のいずれかがTrueになる時
elseif (is_sticky($post_ID)) :
//□この投稿をフロントページに固定 にチェックが入っている時
//引数には投稿IDを入れる。
elseif (is_tag()) :
elseif (is_tag( 56 )) :
elseif (is_tag(  56 , 'tagslug' , 'タグ名' )) :
//タグページ
//引数は、タグID、タグ名、slug のいずれかか、それらを含めた配列
elseif (is_admin()) :
//管理画面
endif;
0

WordPressでカテゴリごとにページングしたい時

投稿ページ(シングルページ)で前後の記事にリンクを貼る時(ページング)
previous_post_link('%link' , '%title');
next_post_link('%link' , '%title');
としますが、カテゴリ毎にページングしたいときは、第三引数に TRUE を入れます。
previous_post_link('%link' , '%title' , TRUE );
next_post_link('%link' , '%title' , TRUE );
これで、カテゴリごとにページング出来るようになります。
0

PHP 配列の内容から必要な値を検索する

一つだけ見つけるには、array_serch を使います。

$array = array('1at'=>'a' , '2nd'=>'b' , '3rd'=>'c' , '4th'=>'d');
echo array_serch('b' , $array)?"見つかった!":"見つからなかった。。。";

ちなみに、?: は三項演算子で、 条件?真の時:偽の時です。なので以下と同じ。

$array = array('1at'=>'a' , '2nd'=>'b' , '3rd'=>'c' , '4th'=>'d');
if(array_search('b' , $array)){
     echo "見つかった!";
}else{
     echo "見つからなかった。。。";
}

複数取得するには、array_keyを使う。

$array = array('1at'=>'blue' , '2nd'=>'red' , '3rd'=>'yellow' , '4th'=>'green' , '5th'=>'red');
$result = array_keys ($array , 'red');
foreach ($result as $arrayKey => $arrayValue){
     echo "['$arrayKey'] = $arrayValue";
}
0

PHP 配列の繰り返し制御

配列を for で繰り返し。

$array = array('a' , 'b' , 'c' , 'd');
for($i=0;$i<count($array);$i++){
     echo $array[$i];
}

配列を foreach で繰り返し。

$array = array('a' , 'b' , 'c' , 'd');
foreach ($array as $arrayValue){
     echo $arrayValue;
}

連想配列を foreach で繰り返し。

$array = array('1at'=>'a' , '2nd'=>'b' , '3rd'=>'c' , '4th'=>'d');
foreach ($array as $arrayKey => $arrayValue){
     echo "['$arrayKey'] = $arrayValue";
}

 

ループの中で、連想配列の中身を書き換え。

$array = array('1at'=>'a' , '2nd'=>'b' , '3rd'=>'c' , '4th'=>'d');
foreach ($array as $arrayKey => &$arrayValue){
     $arrayValue = "[$arrayValue]";
     echo "['$arrayKey'] = $arrayValue";
}
unset($arrayValue);//参照を解除
0