フォーラムへの返信

15件の返信を表示中 - 1 - 15件目 (全94件中)
  • フォーラム: プラグイン
    返信が含まれるトピック: ACFフィールドを別ページに表示する方法

    @mikujin さん

    こんにちは。

    スラッグ名で会員を分ける方法のアドバイスを頂きましたが、会員レベルは変動するので、スラッグ名には使えそうにありません。
    会員を識別するトリガーは、各会員ページ(固定ページ)のACFで設定しているlankだけという条件下でTOPページに反映できればベストなのですが・・・

    そうすると、一度全ての固定ページを取得した上で、人力でフィルタリング・グルーピングする必要があると思います。

    固定ページ一覧を取得するget_pagesという関数があるので、一度リファレンスを参考にしてみて下さい。

    具体的なコードも、まずはご自身で書いてみる事をおすすめします。

    フォーラム: プラグイン
    返信が含まれるトピック: ACFフィールドを別ページに表示する方法
    Tetsuaki Hamano

    (@wildworks)

    @mikujin さん

    こんにちは。
    カスタム投稿を使えず、動的に増減する固定ページとなると、ちょっと力技が必要です。

    考え方としては、

    • 固定ページのスラッグの命名規則を、「page_{ランク}_{連番}」のように決める
      page_gold_0page_silver_2
    • 連番は、必ず抜けが無いようにする
    • トップページでは、大き目の回数を指定したループ文を使い、グループ別に固定ページ全件を取得する
    • ループ内で固定ページが無ければ、以後の連番の固定ページは無いものとしてそこで処理を終了する

    です。

    コード例は以下です。

    <div class="box-gold">
      <h2>ゴールドランク</h2>
      <?php
      for ( $i = 0; $i < 999; $i++ ) { // 全件取得出来るように大きめの回数を指定
        // ゴールドランクに属する固定ページを取得
        $page = get_page_by_path( 'page_gold_' . $i );
    
        // ページが無ければ、以後の固定ページは無いものとして処理を修了
        if ( ! $page ) break;
    
        $page_id = $page->ID;
    
        the_field( 'name', $page_id );
        the_field( 'hobby', $page_id );
        the_field( 'birthday', $page_id );
      }
      ?>
    </div>
    
    <div class="box-silver">
      <h2>シルバーランク</h2>
      <?php
      for ( $i = 0; $i < 999; $i++ ) { // 全件取得出来るように大きめの回数を指定
        // シルバーランクに属する固定ページを取得
        $page = get_page_by_path( 'page_silver_' . $i );
    
        // ページが無ければ、以後の固定ページは無いものとして処理を修了
        if ( ! $page ) break;
    
        $page_id = $page->ID;
    
        the_field( 'name', $page_id );
        the_field( 'hobby', $page_id );
        the_field( 'birthday', $page_id );
      }
      ?>
    </div>

    別の方法として、固定ページにカテゴリーを設定する事も出来るようです。
    試した事はありませんが、WP_Querytax_query等を使えば、固定ページでもカテゴリー(ランク別)にページを取得出来るかもしれません。

    フォーラム: テーマ
    返信が含まれるトピック: 文字下の下線を消したい

    @an83022 さん

    こんにちは。
    そのプラグインは使った事がありませんが、以下CSSで対応出来ると思います。

    #npcatch li a{
        text-decoration:none;
    }
    
    #npcatch li a:hover{
        text-decoration:underline;
    }

    またこのようなケースの場合、ブラウザのデベロッパーツールを使用して、該当箇所のCSSセレクタ名と適用されているスタイルを確認して上書きする、というのが基本です。

    今後のために、「Chrome CSSセレクタ」などのキーワードで調べてみて、どのように上書きすればよいかを調べてみる事をお勧めします。

    フォーラム: 使い方全般
    返信が含まれるトピック: アカウント認証APIが存在するのか知りたい

    @mtbybaba さん

    こんにちは。
    補足となりますが、自社システムとWordPressサイトが同ドメイン(またはサブドメイン)に乗っているのであれば、認証状態の判別にクッキーではなくセッションを使う方法もあると思います。

    ただ、私もそこまで専門知識があるわけではないので、一度詳しく検討してみていただければと思います。

    フォーラム: 使い方全般
    返信が含まれるトピック: アカウント認証APIが存在するのか知りたい

    @mtbybabaさん

    はじめまして。
    自社システムへのログイン状況によって、WordPress側で表示するページを切り替えたい、という事でしょうか。

    それであれば、WordPressのAPIは関係なく、自社システム側の話になるのではないかと思います。

    一例として、以下のような構成になるのではないかと思います。

    1. 自社システムのログイン/非ログイン情報を、ブラウザのクッキーにトークン文字列等で保持するようにする
    2. 自社システム側に、トークンをもとにログイン状況を判断・返却するAPIを用意する
    3. WordPressで作成したページ内のコンテンツをクリックした時に、WordPress側から、クッキートークンをもとに自社システム側のAPIを叩く。
    4. レスポンスが「非ログイン」であれば、現在表示中のWordPressページのURLをパラメータに含めた上で、自社システムのログインページにリダイレクトさせる
    5. 自社システムでログイン認証時、ブラウザのクッキーにトークン文字列を保存する
    6. WordPress側からパラメータとして渡ってきた、WordPressのページURLにリダイレクトさせる

    セキュリティも関連してくるため、十分に調査・設計された方がよいかなと思います。

    フォーラム: テーマ
    返信が含まれるトピック: 文字下の下線を消したい

    @an83022 さん

    はじめまして。
    以下のCSSを追加してみてはどうでしょうか。

    .entry-content .wp-block-button__link {
        text-decoration: none;
    }
    .entry-content .wp-block-button__link:hover {
        text-decoration: underline;
    }
    フォーラム: プラグイン
    返信が含まれるトピック: ACFフィールドを別ページに表示する方法

    仕様の確認ですが、

    • 各会員を固定ページとして管理し、各固定ページにACFを使って会員情報を付与している
    • 会員数は都度増減する
    • TOPページでは、会員ランクでグルーピングした上で全会員を表示したい

    であっていますでしょうか。

    それですと、そもそも会員を固定ページで管理する事自体がスマートではないように思います。

    代わりの一例としては以下です。

    • 会員をカスタム投稿として管理する
    • 会員カスタム投稿に、会員ランク(rank)をタクソノミーとして紐づける
    • その他タクソノミーで管理できない固有の情報(hobby / birthday)については、ACFで情報を付与する
    • TOPページではWP_Queryを使い、tax_queryでrank毎に会員一覧を取得、ループして表示
    • ループの中で、ACFの情報を出力する

    以上のヒントをもとに、一度全体の設計を再考されてみてはいかがでしょうか。

    フォーラム: 使い方全般
    返信が含まれるトピック: サイト内検索でキーワードが未入力の場合

    @poncyanさん

    はじめまして。

    通常のテーマであれば、検索キーワードが未入力の場合でも固定ページはヒットするはずです。
    まずは、以下を確認してみていただけないでしょうか。

    1. お使いのテーマは何でしょうか。もしくは自作テーマでしょうか。
    2. 検索結果に影響を与えるようなプラグインは使用されていないでしょうか。一度、プラグインを全て無効にしてみて下さい。
    3. コード内のquery_posts~は、検索結果を全件表示するために挿入されているかと思いますが、一度この一文を削除して改善がないかお試し下さい。

    ちなみに、query_postsは公式に非推奨となっています。

    代わりに、pre_get_postsアクションフック内でis_searchで分岐して表示件数をコントロール出来ますので、よろしければ調べてみて下さい。

    フォーラム: プラグイン
    返信が含まれるトピック: ACFフィールドを別ページに表示する方法

    @mikujinさん

    こんにちは。
    詳しい要件は分かりませんが、「TOPページに、任意の固定ページが持つACFの情報を出力したい」という事でしょうか。

    そうすると、「TOPページ側で、どの固定ページの情報を取得するかを指定するためのフィールドを用意する」
    というやり方になるかと思います。

    具体的には以下のようなやり方です。

    • カスタムフィールドグループ作成:「ルール」は、「ページ=トップページ」等
    • 「投稿オブジェクト」フィールドを複数追加:page_1, page_2など。「投稿タイプ」は「固定ページ」、「返り値のフォーマット」は「投稿ID」
    • トップページの記事編集画面で、作成したカスタムフィールドのプルダウンから、情報を表示させたい固定ページを選んでおく
    • トップページに、以下のようなコードを記述(未検証です)
    <?php
    // TOPページで指定出来る固定ページの数を5つとした場合(page_1 ~ page_5)
    for ( $i = 1 ; $i <= 5; $i++ ) {
      // 指定した固定ページのIDを取得
      $page_id = get_field( 'page_' . $i );
    
      // ページを指定していない場合はなにもしない
      if ( ! $page_id ) continue;
    
      // 各固定ページで指定したカスタムフィールドを取得する
      $page_meta = get_field( 'page_info', $page_id );
    
      if ( $page_meta ) {
        // ここで固定ページの情報を使って何かする
        // echoで画面出力、または後で出力する用に配列に格納、等
      }
    }
    フォーラム: 使い方全般
    返信が含まれるトピック: テーブルの表示が崩れてしまう

    @canashin1さん

    はじめまして。
    私も同様に症状は確認出来ませんでしたが、非常に稀ですが過去に似た症状に遭遇した事があります。
    その時は、セル内の画像にmax-height:none;を当てる事でなぜか解決しました。

    @canashin1さんのサイトの場合だと、以下のようなCSSになると思います。

    @media only screen and (max-width: 599px)
    .post .scroll-box table td img {
      max-height: none;
    }

    効果があるか分かりませんが、一度お試しいただければと思います。

    @blopolice さん

    こんにちは。
    お力になれず申し訳ありませんが、原因の切り分けが難しいため、一度WordPressの再インストールを試されてみてはいかがでしょうか。

    再インストール後にテーマの変更・プラグインのインスト―ルを順番に行い、どのポイントで問題が発生するのかを切り分けてみるのが良いのではないかと思います。

    フォーラム: 使い方全般
    返信が含まれるトピック: 自作いいね機能について
    Tetsuaki Hamano

    (@wildworks)

    @non888さん

    こんにちは。

    概ね問題ないコードかと思いますが、品質・セキュリティ向上のためのポイントをいくつかお伝えします。
    ※動作確認していないためエラーがあるかもしれず調整も必要かもしれません

    ■コード_サイト表示用ショートコードいいねボタン

    function view_good_btn()
    {
    
        // ACFプラグインが無効化されている(get_field等が使えない)場合は何もしない
        if(!function_exists('get_field')) return;
    
        global $post;
        $postID = $post->ID;
        $count = get_field('good_counter', $postID);
    
        if(!$count){ //ACFのget_fieldはレコ―ドがなければ確かfalseを返すので、このようにシンプルに書ける
            //値の取得をACFのget_fieldでやるなら、値の更新も以下のようにACFの関数で統一するべき
            update_field('good_counter', 0, $postID);
            $count = get_field('good_counter', $postID);
        }
    
        // いいねしたかどうかの状態からボタン用クラスを作成(三項演算子)
        $button_class = isset($_COOKIE['good']) && array_key_exists($postID, $_COOKIE['good']) ? 'good_in_button' : 'good_not_button';
    
        // button_classを作っておけば、一行でシンプルに書ける
        // 変数を埋め込む時は無害化する(esc_attr、esc_html)
        // buttonにはちゃんとtype属性を付ける
        // 中にspanタグを入れなくてもよい
        $output = '<button type="button" class="good_button ' . esc_attr($button_class) . '" data-id="'. $postID .'">' . esc_html($count) . '</button>';
    
        return $output;
    }
    add_shortcode('good_btn', 'view_good_btn');

    ■コード_Ajax(いいねボタンクリック時)

    <script>
    $(document).on('click','.good_button',function(){
      var $target = $(this);
      // 先に二つのクラスをremoveしておく
        $target.removeClass('good_in_button good_not_button');
    
      if($target.hasClass('good_in_button')){
        //レスポンスデータからカウントを取得するため不要
        // var count = count_num - 1;
        $target.addClass('good_not_button');
      } else {
        //レスポンスデータからカウントを取得するため不要
        // var count = count_num + 1;
        $target.addClass('good_in_button');
      }
    
      jQuery.ajax({
        url: ajaxurl, // グローバル変数を使う(後述)
        type: 'POST',
        data: {
          'action' : 'count_up',
          'postID' : $target.data('id')
        },
        success: function(res) {
            レスポンスデータからカウント数を設置
            $target.text(res);
        }
      });
    
      // 不要
      // return false;
    });
    </script>

    備考:Ajax用のURLをJavaScriptグローバル変数として出力しておく

    function add_my_ajaxurl() {
    ?>
        <script>
            var ajaxurl = '<?php echo admin_url( 'admin-ajax.php'); ?>';
        </script>
    <?php
    }
    add_action( 'wp_head', 'add_my_ajaxurl', 1 );

    ■コード_いいねカウント処理

    function count_up(){
      // postIDが渡ってこなかった時の事も考慮すべき
      if(!isset($_POST['postID'])) die();
    
      // ACFプラグインが無効化されている(get_field等が使えない)場合は何もしない
      if(!function_exists('get_field')) return;
    
      $postID = $_POST['postID']; //投稿ID
      $count = get_field('good_counter',$postID);
    
      if(isset($_COOKIE['good']) && array_key_exists($postID, $_COOKIE['good'])){ //すでにその投稿のいいねをしているか確認
    
        if($count > 0){
            //すでにいいねしており該当の投稿のいいね数が0より大きければ-1する
    
            //値の取得をACFのget_fieldでやるなら、値の更新も以下のようにACFの関数で統一するべき
            update_field('good_counter', $count - 1, $postID);
        }
        setcookie('good['.$postID.']', $postID, time() - 30, '/', $_SERVER['HTTP_HOST']); // Cookieから該当の投稿情報を削除
      } else {
        setcookie('good['.$postID.']', $postID, time() + 60 * 60 * 24 * 30, '/', $_SERVER['HTTP_HOST']); //いいねした投稿情報をCookieに保存
    
        //値の取得をACFのget_fieldでやるなら、値の更新も以下のようにACFの関数で統一するべき
        update_field('good_counter', $count + 1, $postID);
      }
    
      //新しいカウント数を返却する
      the_field('good_counter',$postID);
      die();
    }
    add_action( 'wp_ajax_count_up', 'count_up' );
    add_action( 'wp_ajax_nopriv_count_up', 'count_up' );
    Tetsuaki Hamano

    (@wildworks)

    @blopolice さん

    こんにちは。
    原因は分かりませんが、SSL証明書が正しく認識されていないような気がします。
    普通にサイトにアクセスする分には、Chromeでも鍵マークは赤くなっておらずちゃんとhttpsで通信出来ていますので、WordPress管理画面の何かしらの設定が問題かもしれません。

    一旦原点に戻って、

    • デフォルトテーマ(TwentyTwentyOne)へ変更
    • すべてのプラグインの停止

    などを再度試してみていただけないでしょうか。
    参考:問題解決のためのチェックリスト

    Tetsuaki Hamano

    (@wildworks)

    @blopolice さんこんにちは。

    解決のため、いくつか情報をいただけますでしょうか。

    • 「/Users/rokusugiyama/Desktop/スクリーンショット 2021-10-02 8.57.57.png」が見れませんので、表示されているエラーメッセージを教えて下さい。
    • 管理画面の「WordPressアドレス」と「サイトアドレス」は、「https://blo-police.com/」になっていますでしょうか。(https~、かつwwwなし)
    • Chromeに関しては、ブラウザのアドレスバーの頭の鍵マークが赤くなっているが、記事投稿自体は問題無く行えるという事でしょうか。

    @blopolice さん

    こんにちは。

    chromeで起動して投稿画面を開いた際にも、コマンド、オプション、1キーをしましたが、こちらでは反応はありませんでした。

    →申し訳ありません、ちょっと文字が分かりづらかったですが、Macの場合は「Command+Option+I」で、「I」というのは数字ではなくアルファベットです。

    あとは、ブラウザによってサイトの保護状態(http/https)が変わるのが気になるのですが、管理画面 > 設定メニューの「WordPressアドレス」「サイトアドレス」はhttps~になっていますでしょうか。

15件の返信を表示中 - 1 - 15件目 (全94件中)