msio
フォーラムへの返信
-
フォーラム: 使い方全般
返信が含まれるトピック: サブメニューが属するメニュー名を取得したい十重二十重ご迷惑をおかけし申し訳ございません。
menu がメニュー単位で sample_menu に検索対象メニュータイトルを入れていただければ
調査が可能、0番目がトップレベルだとおもっていたのですが
menu は作成されたメニューのトップレベルで複数あるということですよね。自分の属する、を探すのであればin_arrayで自身を配列から検索し
含まれていればその階層の最上位を取得する、という動作が望ましいということでしょうか。メニュータイトル>customized_menu—内↓
menu1 top level
│
├SUB1
└SUB2menu2 top level ← これを取得したい
│
├SUB1
└SUB2 Current★
メニュータイトル>customized_menu—迄↑ちょっと私の実力では力及ばずというところだと思いますがなにかできることがありましたら頑張りたいと思います。
フォーラム: 使い方全般
返信が含まれるトピック: サブメニューが属するメニュー名を取得したいもう解決されたでしょうか。
他の方々がご指摘されているとおり、私の完全な間違いであり恥の上塗りではありますが他の方々がご紹介されている内容についていまさら同じことの繰り返しになりますが表記させていただきます。
なにとどご容赦いただけると幸いです。<?php //抽出パラメータ //逆順で一番上の親が先頭 $param = array( 'order' => 'DESC', 'orderby' => 'menu_order', 'post_type' => 'nav_menu_item', 'post_status' => 'publish', 'output' => ARRAY_A, 'output_key' => 'menu_order', 'nopaging' => true, 'update_post_term_cache' => false ); //親ノードストリーム取得 $famtree = wp_get_nav_menu_items( 'sample_menu', $param ); //一番目のアイテムが総本家なのでリンク作成 $parent_text = "<a href=\"".$famtree[0]->url."\">".$famtree[0]->title."</a>"; //作成したリンクを表示 echo $parent_text; //パンくず変数 $breadtrail = ""; //末端まで循環 foreach($famtree as $value_fam){ //変数に既値あればセパレータ追加 if(strlen($breadtrail)>0){ $breadtrail .= " > "; } //リンクを追加 $breadtrail .= "<a href=\"".$value_fam->url."\">".$value_fam->title."</a>"; } //親たちのリンクに自分の名前を任意で追加し表示 //get_title でいいと思いますが echo $breadtrail." > and me"; ?>
- この返信は8年、 3ヶ月前にmsioが編集しました。理由: コードの記述(リンク)埋め込みがタグ変化していたのであらためて再投
フォーラム: 使い方全般
返信が含まれるトピック: サブメニューが属するメニュー名を取得したいフォーラム: プラグイン
返信が含まれるトピック: プラグインの設定画面の作成方法について解決なされましたでしょうか。
@kimipooh さんのご説明に完全に蛇足なのですが拙作の用例をつくってみました。
もしか何かの折にご参照いただけると幸いです。
ブランクのプラグインフォーラム: 使い方全般
返信が含まれるトピック: サブメニューが属するメニュー名を取得したい私の拙い進言でお困りを深めてしまって申し訳有りません。
パンくずをつくるにあたり自分から順に親を取得していけば最後は親にたどりつくので、積み上がって行く途中経過を破棄すれば、最後の値が元の親として示せるのではないかと思った次第でした。
なので、親があれば「追加」ではなく「変数を上書き」して終了すれば最後に残ったものが親になるのではないかと思いましたものでご迷惑をおかけいたしました。
つい、遡るといえばいずれパンくずの必要性がでてくるのではと思い行きすぎたまねをしました。どのようにというご要望について分かりかねる程度の推察でもうしわけないのですが、ドットで変数を繋げると追加になるので、イコールで上書きして最後の値を取得するコードに変更して、使い方としてはテンプレートに直接書き込むと使えるとおもうのですがいかがでしょうか。
page.php などのテンプレートにそのままはりつけ、echoの部分だけ任意の箇所にはりつければ出力はそのechoの部分からされるのですがお試しいただければ幸いです。
フォーラム: 使い方全般
返信が含まれるトピック: サブメニューが属するメニュー名を取得したいこんにちわ。
パンくずリストができるようなコードを記載しておきますね。
なにかの足しになればよいのですが。
<?php
//現在の投稿情報を借り受け
$posty = $post;
//現在のタイトルを取得
$me_title = get_the_title();
//親記事IDを取得
$parent_id = $posty->post_parent;
//リストの変数宣言
$breadtrail = "";
//親IDがある限り循環
do{
//親ページのタイトル取得
$parent_title = get_post($parent_id)->post_title;
//親ページのリンクを取得
$parent_link = get_post($parent_id)->guid;
//自身の複製を防ぐためにタイトル確認
//同じタイトルで階層をつくるのは「ありえない」(無意味)という見解から
if(strtolower(trim(strip_tags($parent_title)))==strtolower(trim(strip_tags($me_title)))){
//そういうニーズがあろうと終了
break;
}else{
//タイトルが異なっていれば
if(strlen($breadtrail)>0){
//先にデータが入っていれば>付きで階層追加
//変数に加算は 変数 = 加工データ+以前の変数 という形で成り立っています
//(さかのぼって追加していくため)
$breadtrail = "".$parent_title.""." > ".$breadtrail;
}else{
//データがまだなければそのまま代入
$breadtrail = "".$parent_title."";
}
}
//親ページを借り受けページにして親参照を確認
$posty = get_post($parent_id);
//いま借り受けた親ページの親を確認
$parent_id = $posty->post_parent;
}while($parent_id);
//親がなければ終了
//文字情報があれば表示
if(strlen($breadtrail)>0){ echo $breadtrail." > ".$me_title; }
?>
フォーラム: プラグイン
返信が含まれるトピック: Redirectionで301リダイレクト設定についてログインページの変更は可能だと思います。
ログインフォームは任意で作成が可能で、ユーザー名とパスワードの受け取りモジュールに
wp_signon
関数を利用すればログイン機能を実装することができます。ログインフォームからfunctions.phpなどにログインルーチンを組み込めば動作可能です。
関数利用せずログインフォームを機能させる場合にはwp-login.phpに投げることになるので
変更はむつかしいですが安全のために露出させないという手もあるかと思います。
外部からのアクセスでは表示させず、内部プロセスからアクセスした場合(アクセス元が自分のIPである場合)以外は
動作しないなどの手段です。<?php if($_SERVER["REMOTE_ADDR"]!==gethostbyname(gethostname())){ exit; } ?>
この一文を先頭に入れるだけで自分(サーバー)のIPからではないアクセスの場合は即時終了します。使い方としては一旦サーバー側でログイン情報を受け取り、それが安全であるという確認作業プログラムを経て
内部からあらためてログインフォームに投げるという形などで使えるかと思います。ただ既存のテーマや機能に加工をしてもバージョンアップなどでかき消されることがある可能性があるので注意が必要かと思います。
セキュリティに問題が発生するのは、ユーザー名とパスワードが暗号化されていない状態でインターネットを
流れるところにあると思います。
目的地にたどりつくまでにデータはいくつものサーバーを経由するのですがその途中で暗号化されていない内容は取得して
内容を確認することが可能な技術もあります。
ログインのアドレスが変わっても、変わったアドレスに対して何度もログインを試みれば結果同じなので
アドレス名の変更だけで安全性の確保というのはあまり意味がないと思います。「USER=AAA PASS=BBB 対象サーバー=CCC」 といったデータがまとまって中継サーバーで取得されてしまうと安全とはいえないということだと思いますので
それらを暗号化または、分散して無意味に見えるものに変えるという手があると思います。2つのサイトでそれぞれ違うキーをわたしてログインする、ファイルのハッシュコードをログインにつかう
ひみつの設問、画像の組み合わせなど、中継サーバーに取られても問題のない平文もしくは暗号化だと思います。暗号化が現実的でないという場合は、途中の経路で読まれてもログインの方法を解明するに至らないデータという
つくりかたであれば概念的に「セキュアな」といえると思います。
ログインは同時に一つだけ、ログインしたら告知する、記録を参照するなど手法は多岐にわたるかと思います。あとは回数アタックを許さない、3回でロックなどの機能で機械作業からの危機回避には使えると思います。
暗号化以外となるとアイデア次第だと思いますので、メールでZIPファイルとパスワードファイルを別々に送るような
地味な対策から複雑で高度なもの、物理的なものまでサーバーとユーザーだけが正解を形成できる取り組みはあるかと思いますが
実質小さいサイトのデータまで収集できる容量のある設備はそうあるものではないですし、一番多い情報漏洩は
人為的なものということもあり、用途に合わせて作業や手間、料金といったコストを見積もるのも手立ての一つかと思います。SSLで暗号化されたログインで高度なパスワード紹介機能とIDカードを利用したところで通信内容がSSLで保護されていなければ
漏洩もありえますし、サーバー側がそれをログインとは関係なく漏洩してしまうリスク、絵日記をかくだけなのにセキュリティコストに
月数万円をかけるなどのバランシングなど、それぞれに適があると思いますので「あくまで安全に」を実現するには暗号化が一番かと思います。
SSL利用にコストはかかりますが、サーバー選択時にPLESKが利用可能なところを選んでプラグインに「LET’S ENCRYPT」導入することで
無料のSSLを利用できることや、レンタルサーバーに契約単位でついてくる独自SSL(警告は出る)などを選択するという手段も対策の一つかと思います。つたないお話ですがなにかの参考になられましたら幸いです。
フォーラム: テーマ
返信が含まれるトピック: 自作テーマ作成後のチェックについて作成したテーマの確認について挙げておられる3項目以外にもあるかというご質問からは逸れてしまいますが
作成されたプログラムの見直しについて全般的にご紹介したいと思います。プログラムの確認作業、いわゆるデバッグなどの作業というものそのものがプログラミングといっても
過言ではないくらい重要なものだと私は考えています。例えて確認項目として変数の定義を確認する必要を挙げます。
固定長を利用している、文字列と数字の受け取り、クラス間での名前の統一、使用時期に応じて宣言、破棄など
ひとしきり確認する必要があるため、それらをリストアップすることになるでしょう。
それぞれの役割と関係性を書き出しますと、それは構造定義書になります。サイトマップを取得するなどはプラグインなどで可能かと思われますので、テーマをサイトに設置して
それぞれのページの動作を確認します。そこでモジュールがすべて稼働しているかどうかという
その「すべて」の言葉の意味を定義するために動作モジュールを書き出して、動作条件と関係性を書き出します。
するとER図ができます。これらを設計、作成、設置、確認、という流れで枠をつくりそれぞれにチェックをいれていくと工程表になります。
最初からこれができるようになる、することになるのが業務という単位になりますが、それに至るまでに
練習と経験でつくりあげていく、一回目の作業はもちろん設計などありませんが、二回目以降にその反省を
踏まえて予定をたてていくと、自ずと「業務レベル」の作業になっていくものだと思います。生産系の業務をされているかたはもちろんそういう工程を経てそれぞれの業務をこなし、各業界では
その経験値が設計に表れていると思いますが、それを作り上げるのはなにより「チェック作業」という
工程にあると思います。何がベストでこれをやっておくべきだ、というのは私にはわからないのですがその方法を構築することが
プログラミングスキルそのものだと思うので、ご質問の回答には至らないかと思いますが私としては
回答のないものであったり回答すべきでない問題かと思いましたのでご紹介させていただきました。いまできた今回の作品が今までで一番、毎回それぞれの終端には各々の最高ができていくと思いますので
その都度、手法が向上していく確認方法を作成されていくのがよいのではないかと思います。お目汚し申し訳ございませんが素人の意見としてご容赦いただけると幸いです。
フォーラム: 使い方全般
返信が含まれるトピック: WordPressで固定ページ以外を表示させない方法。設定の「表示設定」からフロントページの表示を「固定ページ」にして特定のページが表紙になるようにしてそのページのテンプレートを無地のものにしてみるのはどうでしょうか。
テンプレートはほとんどの機能を削り取ったもので固定ページの記載内容だけが表示されるものを考えてみました。
page.php →複製→ page_muji.phppage_muji.php の内容
<?php
/**
Template Name: トップページ(無地)
*/
?>
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<title id="title">ページタイトル</title>
<body id="body" name="body" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0">
<!-- コンテンツエリア -->
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php $content_text .= get_the_content(); ?>
<?php echo $content_text; ?>
<?php endwhile; ?>
<!-- コンテンツエリア -->
</body>
<?php wp_footer(); ?>
</html>
フォーラム: 使い方全般
返信が含まれるトピック: デフォルトアバター(ミステリーマン)が表示されないすみませんでした。確認いたしました。
数値はべつにNullで大丈夫のようです。アバター取得からURLの抽出につかっている正規表現が問題みたいです。
取得したmatchをvar_dumpで内容を確認してみてください。
srcの指定がシングルクォーツで囲まれているので検索に合致しないためURLが取得できないようです。
かこみのクォーツは指定がばらけていることがあるのでどちらでも取得するようにするととれると思います。
ただJavascriptと混合でつかっていて難解な場合はへんな動きをするかもしれません。preg_match('/src=[\"|\'](.*?)[\"|\']/', $image, $match)
正規表現なのでクォーツは円マークでエスケープしてあげてください。@gblsm さんが先に回答をしめされていました。
失礼いたしました。- この返信は8年、 3ヶ月前にmsioが編集しました。
フォーラム: 使い方全般
返信が含まれるトピック: デフォルトアバター(ミステリーマン)が表示されないフォーラム: 使い方全般
返信が含まれるトピック: 階層カテゴリーの短縮表示フォーラム: 使い方全般
返信が含まれるトピック: 改行コードの削除または非表示方法phpのtrim関数をご利用になってはどうでしょうか。
<?php echo trim(strip_tags(category_description())); ?>
フォーラム: 使い方全般
返信が含まれるトピック: 階層カテゴリーの短縮表示