msio
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: 登録ユーザー毎に問い合わせフォームをつけたい。$user = get_userdata(ユーザーID番号(数字))
$user->user_email
するだけですよー。- この返信は8年、 2ヶ月前にmsioが編集しました。
フォーラム: 使い方全般
返信が含まれるトピック: 登録ユーザー毎に問い合わせフォームをつけたい。フォーラム: 使い方全般
返信が含まれるトピック: 絞り込み検索でチェックしているものを別枠に即表示させたい私も部分的になってしまうのですが、とりいそぎご利用中の状態を鑑みてこれ以上自力で進むべきかどうかを判断いただけたらと思います。
まず解決すべきとしている問題はおそらくほとんどの比重をJavascriptに置くものではないかと思います。
即時反映、枠の意味するところが理解できておりませんが、フォームの動作を読み込みなしに別の要素に反映させたいという意図で選択されたものかなと思っております。そこで、現状をたしなめるだけになってしまいますがご紹介いたします情報について理解が先に進める様であれば別途Javascriptについてご研鑽を積まれてみるのもよいのではと思います。
まず要素の指定なのですが、どこのデータをどこに入れるかということをはっきりさせるため名前づけをするのですがタグは
ID と NAME のプロパティがあります。IDは絶対的なものでページに一つである必要があります。複数あると動作しません。
NAME はグループ化することができグループ化したものは配列として取得することができます。ラジオボタンは同グループ内で一つしかチェックできないなどの
動作を自動化することもできます。
ここで、NAMEは配列が可能なので @latobeam さんの仰られている配列構造になるのですが、配列の指定で[]は存在する要素に追加していく指定方法になります。
インテグサを必要とせずインクリメントしていくので、すでに配列に3つ要素のはいっている変数に 変数[]=”A” とすると四つ目の要素がAになります。
順序などを気にせずなんでも配列構造に代入したいときに使います。この時点でご注意いただきたいのですが、引き渡したい要素は数量が変更になる(テキストボックスの個数がユーザーの都合によって増減する)ことがあるものでしょうか。
固定の数量であるならばIDを利用して絶対的な要素に引き渡した方が確実かと思います。そしてそのNAMEとIDの要素なのですが、これを指定するのに document 要素内から IDの要素を探す という命令 getElementById をご利用の様子ですが
これで探せるのは IDで名づけられた要素です。 NAME に同じ名前があってもなくても見つけられません。ここまでで、POSTする要素を構成する団体はID で自由気ままに組んで、最終NAME で整形してPOSTするとよいのでは、とお考えになられたら次に進まれるとよいかと思います。
進まれる折、お気づきになられれば幸いなのですが getElementById があるということはgetElementByNameやgetElementsByClassNameもあるのではないかと、そうなんです。
それぞれの配列になる、指示側からみて1対多であるから発信はできても受信はできなさそうだな、と連想いただけるとなおありがたいのですが、用途と特徴がことなります。
今回およびその他多く使われる「代入動作の補助」としての指定には IDが適しており今回もIDで的中だと思います。繰り返しになりますが例として「色」という項目について条件が4色といった分岐になるとき、色プロパティの色素要素の指定となればNAMEで色配列に各色データをいれて
ON/OFFをプロパティづけする必要がでてきて、これにはNAMEが適だろうと思います。ここまでは大丈夫でしょうか。
そこでJSコードについてなのですが
//searchform という名前のフォームを丸ごとオブジェクト化して取得 msio
var $formObject = document.getElementById( "searchform" );
//取得した要素の個数を上限にiを加算ループ msio
for( var $i = 0; $i < $formObject.length; $i++ ) {
//フォームの中にある要素全部にアクションを付与 msio これはちょっと無茶じゃないかと…個人の感想です
//ほんとに全部の全要素にアクションが必要でしょうか msio
$formObject.elements[$i].onkeyup = function(){
getValue();
};
$formObject.elements[$i].onchange = function(){
getValue();
};
}
};
//OutputText という要素の「タグ内(innerHTML)」にデータを挿入 msio
//.value(テキスト要素のvalueデータ)ではなくタグの起点と終点の間の情報にデータを挿入しています msio
//innerHTML はspan でくくられた中身を入れ替えたりするのには有用ですがテキストなどの
//valueレセプタが準備できるものにはvalueで入れるものかと思います。
document.getElementById( "OutputText" ).innerHTML = $formObject.s.value;document.getElementById( "Output_lang" ).innerHTML = ''; //いったん中身を削除
for(var $i = 0; $i<$formObject.post_tag_language.length;$i++) { //複数checkedされていることもあるので、forでまわす(まわさないと1番目のしか取れない)
//フォーム内の全部の要素についてチェックのONを確認されていますが
//フォーム要素のなかにあるものは全部チェック要素でしょうか
//仮にテキストボックスやボタンがあれば「checked」プロパティが取得できませんので
//エラー回避にプロパティが取得できなかったときという分岐が必要になります
if($formObject.post_tag_language[$i].checked) {
//ここでもタグにはさまれた中身を置き換えています
document.getElementById( "Output_lang" ).innerHTML += $formObject.post_tag_language[$i].value + ' ';
}
}
}
//valueに入る
<input type="text" id="sample" name="samplename" value="---A---" class="sampleclass">
document.getElementById( "Output_lang" ).value="---A---"//タグの間に入る
<span type="text" id="sample" name="samplename" class="sampleclass">---A---</span>
document.getElementById( "Output_lang" ).innserHTML = "---A---"//ボタンで誘導し制約をかけていますが動作は値の代入です
<input type="radio" name="sample" value="1">
<input type="radio" name="sample" value="2" selected>
<input type="radio" name="sample" value="3">
document.getElementByName( "sample" ).value = "2"
ちょっと正しい記述か確認とほかにもまだまだ色々な書き方がありますがとりあえずWordpressかどうかといわれると
全く関係ないところになってしまいますので割愛をご容赦くださいませ。とりいそぎJSの動作概要を把握いただいて、動作の経路について導線が重複しない想定ができてから、はじめてWordpressの
「なにをうけとり、なにをわたすか」に至るのが効率的にもよいかとおもいますのでご検討いただけますと幸いです。フォーラム: プラグイン
返信が含まれるトピック: ユーザーロールに新しい権限が追加されないのはなぜでしょうか?おつかれさまです。
follow_developer_activities という権限についてなのですが、繰り返しになる説明があるかもしれません。
その折にはお聞き苦しいところもあるかと思いますがご容赦くださいませ。ユーザー、というログインなどに使用する対話のキーを作成するのはご存じのとおりだと思います。
そのユーザーがなにをするのか、なにをしていいのかというのがロールなのですが、これは
「書き込み可能、読み取りOK、どこまで閲覧できるか、ここははじく」などの権限ひとつづつを合わせてセットにしたもののようです。
おおよそアドミニストレータやデベロッパーでつかっていいことわるいこと、をセットしたものだと思います。
これを作り上げるのに、条件において可能か不可かという項目が権限機能で「書き込みOK」writable や read_only などの項目です。
いまされようとしているのはその機能の中に「follow_developer_activities」があるということとして、その権限を付与する、ということなのですが、「follow_developer_activities」とは何をするものなのかがない状態、すくなくとも私にはわからない状態です。
「follow_developer_activities」というのはデータベースに変更を加えることができる機能なのか、読み出すことができる機能なのかがわからないのです。このわからないものを「使用可能」にすることは、基本的にできないのではないかと思い「follow_developer_activities」という機能を追加されているのだとしたら、付与することはできるのではないかとおもうのです。そこで憶測なのですが follow_developer_activities はその記載のとおり
「開発者が実行した結果」でチェックは「なりました」の意味をしていて
アンダーバーで文字を区切ったりチェックをいれたりということでまるでコードのように
表記されてはいるものの、「開発者の任意設定が反映されますよ」という「表現」だったということはないでしょうか。というわけで私は「read」権限のみを付与して作成したベーシックなロールに「delete_posts」投稿削除の機能を追加したり「upload_files」といった機能を追加して「follower」という「ロール」を完成させてるとよいのではないかと思った次第です。
わたしもあまりよくわかっていないので足らぬ間違いなどしているかもしれませんが、思いつくかぎりはここまでになるかと思います。
フォーラム: プラグイン
返信が含まれるトピック: ユーザーロールに新しい権限が追加されないのはなぜでしょうか?ちょうど新しく権限の作成をするところだったので確認してみました。
私は本をもっていないので follow_developer_activities という「権限機能」はないようなので
チェックがついているという状況がわかりませんでした。
ロールの機能を紹介させていただきますと、
名称ときめてその名称に権限としての機能を追加するものです。
その権限の機能は準備されていて、そこに追加する構造が私にはわかりませんでした。
add_role( ‘follower’, ‘Follower’, array( ‘read’ => true ) );
こちらのコードで Follower と表示されている権限には read 機能しか与えられておらずそれ以上はないかと思います。
ほかの機能を追加する場合はこちらのサイトが参考になるかと思います。
Codex日本語版 ユーザーの種類と権限
add_role 三番目のケイパビリティというパラメータが、どういう機能をするものを追加するか、という部分なので
この指示名が違っているのではないかと思います。
follow_developer_activities というロールセットを準備して これはフォロワーが制作作業をどうにかする的なことに必要な権限を許可されるセットとしてくまれているのであれば追加されてしかるべきかと思いますが
私は地味に「書き込み可能、読み取りのみ可能、削除可能、変更不可能」といった具合に地味に追加して「フォロワー」というロールを作成するものなのではないかと思います。
いまちょうどさわっただけなのでつたない考察になりますがご参考いただけると幸いです。<?php /* Plugin Name: WPWA User Manager Plugin URI: Description: User management module for the portfolio management application. Author: Rakhitha Nimesh Version: 1.0 Author URI: http://www.innovativephp.com/ */ //クラス宣言 ★追加注釈 class WPWA_User_Manager { //コンストラクタ クラス初期化時に実行されるコード群 ★追加注釈 //以降の動作に初期値が必要なものはここで宣言しておくもの ★追加注釈 public function __construct() { // 初期化コード register_activation_hook( __FILE__ , array( $this, 'add_application_user_roles' ) ); register_activation_hook( __FILE__, array( $this, 'remove_application_user_roles' ) ); register_activation_hook( __FILE__, array( $this, 'add_application_user_capabilities' ) ); } // フォロワー、開発者、メンバー 3種類のユーザーロール public function add_application_user_roles() { //add_role( '権限名(機械で処理するため半角ローマ字)', '権限表示名(日本語でおk)', array( 追加する権限機能 ) );★追加注釈 add_role( 'follower', 'Follower', array( 'read' => true ) ); add_role( 'developer', 'Developer', array( 'read' => true ) ); add_role( 'member', 'Member', array( 'read' => true ) ); } // 既存のユーザーロールを削除する public function remove_application_user_roles() { remove_role( 'author' ); remove_role( 'editor' ); remove_role( 'contributor' ); remove_role( 'subscriber' ); } // フォロワーの最初の権限を与える public function add_application_user_capabilities() { //フォロワーという権限を読み出す★追加注釈 $role = get_role( 'follower' ); //読みだした権限に機能を付与する★追加注釈 //-------------ここで付与する権限機能がCodexページで見た中に存在していませんがどうなのでしょうか-----------★追加注釈 $role->add_cap( 'follow_developer_activities' ); } } $user_manage = new WPWA_User_Manager();
フォーラム: テーマ
返信が含まれるトピック: メディア(グリッド)の読込みが終わらない時があるどちらのメモリーの量もだいぶ多いほうだと思うのでプログラムか画像の読み出し方法に問題があるのではないでしょうか。
画像の読み込み方法と、画面のつくりかたはどのようにされているでしょうか。
JavascriptやGDI+などお使いではないでしょうか。また一度に読み出す画像の量はいかがでしょうか。
プログラムに特殊なことがなければ一度正常に表示されたWeb画面を名前をつけて保存してみてファイルサイズをはかってみてはいかがでしょうか。
それでも問題なければループ処理を見直してみてはいかがでしょうか。フォーラム: テーマ
返信が含まれるトピック: メディア(グリッド)の読込みが終わらない時があるメディアファイルの大きさが大きいのではないですか?
軽量化した画像ファイルをサムネイルとして表示するなどしてみてはいかがでしょうか。
動画であれば再生を開始してから読み込みを開始するなど。フォーラム: 使い方全般
返信が含まれるトピック: インポートさせたら未分類カテゴリが追加された基本的に未分類のカテゴリは削除できないようです。
データベース的にかんがえてもカテゴリのない場合の避難先に「未分類」を準備しておくのはよいことかとおもいますので目障りではあるかとおもいますが残しておくほうがよいかとおもいます。
ただ、記事についている未分類は、記事をまとめてチェックして一括で編集からカテゴリのチェックをはずすことができるので、ソートをうまくつかいながら全部はずすというのがよいのではないでしょうか。
データベースを直接いじれば全部一括でできますが利便性と引き換えに危険性も含みますので、あくまでワードプレス上での運用をおすすめします。フォーラム: 使い方全般
返信が含まれるトピック: ログインユーザー名(admin)を変更すると特権管理者が外れてしまうなるほど!
マルチサイトの権限グループなのですね。経験値がないため思考が及ばず管理者と同一視しておりました。勉強になります。現状ではマルチサイトの運用をしておりませんので検証はできておりませんが
ワードプレスの機能を利用せず直接データベースの情報を書き換えること自体が仕様にそぐわないので
リレーションに関する部分は連携記述を全部手で書き換えるか、特別に不可領域も書き換える可能な仕様を準備するかになると思います。ユーザー名の変更、というか一般に広く運用されている最初に設定した「アカウント文字列」を変更できない仕様は
メリットよりもデメリットが大きいので導入されていないものなので
先述後者の仕様が導入されることは期待が低く、「ワードプレスの仕様」という事でよいかと思います。
おそらく他のログイン機能をもつサイトも「ログインアカウント文字列の変更」はできないものが多いと思います。フォーラム: 使い方全般
返信が含まれるトピック: ログインはできるが、更新やプラグインのためのサーバー接続ができませんワードプレスはデータベースが生きていればなんとか復活できるものなので、FTPで接続しファイルを削除、再アップロードや全部上書き更新してもワードプレスにログインして行った設定はほとんどすべて復旧が可能だと思います。
ファイルアップロードソフトを使って開いたファイルの内容に変更を書き込んだものは、ファイルとして保存しておかなくては元に戻らないことがあります。
データベースへの接続はwp-config.phpに設定がありますので、あらためてそちらを設定されると接続され、初期のデザインでかつてのページ内容が表示されるかと思います。パーミッションについては、ちょっと意地悪ですが当該問題の解決のみをされても、セキュリティ的に大きく影響がある部分なので、ご自身で設定を選択できる状態になっていただきたいと思います。
先のリンクをご参照いただいたり検索いただいて、私からの想像だけの発言は控えさせていただきたいと思いますがご容赦くださいませ。ちなみにパーミッションの管理はサーバー管理者の方の管轄ではなくご利用者の方の管轄であることが多いのでご確認いただけたらと思います。
フォーラム: 使い方全般
返信が含まれるトピック: ログインユーザー名(admin)を変更すると特権管理者が外れてしまう私には解決方法が見つかりませんでしたので、先のお話をいたしました経緯をお伝えいたします。
どこかに解決の糸口があることを願って。条件
・権限はユーザーのIDから_usermeta テーブルを参照して _user_level _capabilities などに記載があるけれども
連結にはIDを使用しているのでユーザー名変更に関わらない。
・テーブルに対し直接データの変更を行うとユーザー名、メールアドレスの重複は許容される。
・参照方法によっては同名アカウント、同メールアドレスでログインした際、希望したアカウントではないほうでログインされる可能性がある。
(ログインできてしまう:パスワードの重複も前提になります)状態
・メタ情報に関する部分など、アカウント以外には変更をおこなっていない。
・ログインはメールアドレスではなく変更したユーザー名でおこなっている。
・確認はユーザー情報のroles[0]などで呼び出し確認または設定画面のユーザー権限に対する動作で確認している。
(個人で設定した”管理者であれば表示するはずの設定”がない、などではなくワードプレスの機能にて)これらから考えてログインできたユーザーのログイン名が変更されるに伴い権限が変更されたとワードプレスが判断を下すことは、同じ名前で別ユーザーが動作している以外ないと考えたのでした。
なんのお力にもなれませんでしたが解決された折にはきっと私をふくめこれからの問題解決に有益な情報となるかと思いますので陰ながら解決を祈りしております。フォーラム: 使い方全般
返信が含まれるトピック: ログインはできるが、更新やプラグインのためのサーバー接続ができませんもしかしてワードプレスがインストールされたサーバーのフォルダパーミッションが
「稼働させているサーバーの権限では書き込みができない状態」
になっていませんでしょうか。フォーラム: 使い方全般
返信が含まれるトピック: ログインユーザー名(admin)を変更すると特権管理者が外れてしまう表現されている内容に私の理解がついていかない部分がいくつかありますが
user_login の情報だけをを変更すると 設定された権限ではなくなる
ということのみについて
新しく設定するログイン名は
もしかして他に存在するログイン名と同じになっていないでしょうか。フォーラム: 使い方全般
返信が含まれるトピック: taxsonomy-A.php 内に タクソノミーBで区切った表示をさせたいものすごく細かくて意地悪な話かと思いますが、少しだけ進言させてください。
postなど環境準備語とそれに近いものは独自用途での変数名に使用しないほうがいいとおもいます。
PHPのプログラミングについてのお話なのでワードプレス本体とは離れてしまうので簡単にお話できればと思うのですが
foreach の書き方で私が実践しているものをご紹介いたします。
ちょっと初心者むけでいらっとするかとおもいますが、もしか初心者の方にも目に留まれば参考いただけるといいなと思い、かきます。foreach(配列変数を最初から最後までひとつづつ代用して終了するループ)
foreach($post_list(対象となる配列変数) as(当該位置のデータを次の変数に代入する) $key(連想配列の配列名) => $_post(連想配列のデータ名) )なのですが、一般的なトレンドは
foreach ( $arrayed_data as $key => $value )
です。このKEYとVALUEはループ内でしか利用できない一時的な変数なのでこの名前で問題ないと思います。
ただこれをさらにループの中におさめるなどの多段になると同じ名前が利用できません。
なので毎回、一段であってもforeach ( $arrayed_data as $key_ad(arrayed_dataの略) => $value_ad )
と対象の変数の略語をつけるようにしています。ロシアの人の名前で「父親の名前をミドルネームにする」みたいなものです。
すると一時変数だけども用途が可視化されるのでプログラミングが捗ると思います。foreachの中に同じ変数でforeachをまわすとどっちのデータかわからない、というかあとから入れた変数がはいってしまうので
ごちゃまぜになり思った結果がでなくなると思いますのでそれを回避もできます。同じようにスーパーグローバルといった環境で準備されている変数名などに一時的なデータをいれてしまうと
全体がへんなことになってしまう可能性があります。
$post はワードプレスが記事を読みだしたときにループ用でよくつかっているのをみかける変数ですね。
$_POSTはPHPがPOST形式でデータが転送されてきたときの受信変数に使用されます。いかがでしょうか。
フォーラム: プラグイン
返信が含まれるトピック: register_activation_hook関数で使われている引数の解釈あと細かいことなんですが結果を渡す先を指示するまではわかるにしてもなぜ配列なのか、については巻数にパラメータをはじめから三つ、ひとつはもしかしたら外部変数へのリフレクションかもしくは使わない盲腸のようなパラメータを用意するよりは二つで運用して二つ目が「is_array」判定されたらレスポンスを指定のオブジェクトへ返す仕様のほうがスマートだからではないかと思います。
もうひとつ、クラスとグローバルの範囲についてなのですがイメージとしては「声が届く範囲がそのプロセスのグローバル」であり「声がとどかない距離、または近距離でも厚いへだたりを超えて作業をしている状態」がクラス、みたいに言うとよけいにわかりにくいでしょうか。どうでしょうか。
距離が近くて声がとどかないなんてありえない、と想像されるようなきがするのですがたとえば「冷蔵庫」というへだたりは温度の維持を内と外、それぞれに有益な状態をたもっていますが厚い隔たりで「同じプロセス上に置けない」ものだと思います。
仮に、スパゲッティプログラムという全部グローバルで同じプロセスで組むというのは「冷蔵庫にガスコンロがある状態、レスポンスも早く最小で最速の結果を得られる」ものですが、それをとりまく環境をひたすら汚染することが想像できるのではないでしょうか。
いかがでしょうか。