質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • WordPress

    7435questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

WP:会員が記事を投稿でき、記事下部に予め登録した作品情報を挿入したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 806

Yukinonaka

score 1

前提・実現したいこと

会員が記事を投稿でき、記事下部に予め登録した作品情報を挿入したい。

実現したいこと(出来た)

・会員がカスタム投稿タイプで作品情報を自由にいくつでも登録できるようにする。
(プラグインCustom Post Type UIでカスタム投稿タイプ「sakuhin」を作成)
・登録したものを通常投稿で選択することができ、記事に情報を挿入することができる。(例:店舗情報のようなもの)
(プラグインAdvanced Custom Fieldsで、フィールドタイプを「投稿オブジェクト」、投稿タイプをカスタム投稿名「sakuhin」にして通常投稿で選択出来るようにし、各項目の情報をタグで呼び出しした)

実現したいこと(出来ない)

・会員それぞれがカスタム投稿で作品情報を登録できるので、他の会員が見たり編集したりしない様には出来たのですが、通常投稿で挿入する作品情報を選択するとき、他会員の情報も選択できてしまう。
・自分が作成したカスタム投稿(作品情報)だけを選択出来るようにしたい。

ここまではネット上で調べ出来たのですが、以上のことがどうしても出来ません。
このやり方も我流なので、これより他に良い方法があればご教授願います。
足りない情報があれば追記致しますので宜しくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

このあたりに必要そうな要素が散らばっています。うまく構成すれば望まれる挙動に近づくと思います。

【Post Object Query By Author - ACF Support】
https://support.advancedcustomfields.com/forums/topic/post-object-query-by-author/

【ACF | acf/fields/post_object/query】
https://www.advancedcustomfields.com/resources/acf-fields-post_object-query/

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/26 20:48

    ご返答ありがとうございます。

    教えて頂いた参考URLを読んでみてやってみましたが、
    通常投稿の「投稿オブジェクト」が何もない空欄の状態に変わりました。

    function my_post_object_query( $args, $field, $post )
    {
    $current_user = wp_get_current_user();
    $user_id = $current_user->ID;
    $args['author']=$user_id;
    $args['authors']=$user_id;
    $args['post_type']="sakuhin";
    return $args;
    }

    add_filter('acf/fields/post_object/query/name=sakuhin', 'my_post_object_query', 10, 3);

    ここからカスタマイズすると思うのですが分かりませんでした。
    大変恐縮ですが、具体的なご教授を頂けないでしょうか。

    キャンセル

  • 2016/04/26 21:07

    コードは問題ないと思うのですが、会員としてログインをして、その会員の記事をご覧になっていますか? ちなみに参考記事は下記のように管理者を区別しています。
    if ( !current_user_can( 'manage_options' ) ) {} else {}

    キャンセル

  • 2016/04/28 19:14

    会員の記事をご覧になるとはどういった意味でしょうか?
    会員が通常記事を投稿する時に、投稿オブジェクトの選択欄(カスタム投稿で登録した作品情報)が選択出来ない(表示されない)ので投稿すら出来ないので確認ができないのですが

    最初:会員でログインしてカスタム投稿で作品情報をいくつか登録し、デフォルト投稿の投稿オブジェクトから作品情報を選ぶ段階で、他の会員が追加した作品情報が選択出来る
    コードを挿入後:会員でログインしてカスタム投稿で作品情報をいくつか登録し、デフォルト投稿の投稿オブジェクトから作品情報を選ぶ段階で、何もない空欄の状態

    ・Advanced Custom Fieldsのフィールドタイプ、投稿オブジェクトのフィールド名は「sakuhin」です。

    宜しくお願いします。

    キャンセル

  • 2016/04/28 20:18

    > 会員の記事をご覧になる
    管理画面へのログインが、管理者でなく会員の状態で、通常記事の投稿画面を確認すると言うことです。

    > 何もない空欄の状態
    記事が見つからなかった( $argsでの絞込みがうまく指定できていない)可能性があります。

    ACF を入れた環境が手元にないため、具体的な解決方法を提示できるわけではありませんが、自分なら以下のことを試します。
    ・「$args['authors']=$user_id;」を外してみる。
    ・name と key が別々に設定できると思うのですが、「acf/fields/post_object/query/key=sakuhin」にしてみる。
    ・my_post_object_query の中で var_dump() で $args が何を渡しているか精査する。

    キャンセル

  • 2016/05/02 18:13

    > 会員としてログインをして、その会員の記事をご覧になっていますか?
    はい、管理者で変更を行いつつ、別のブラウザを使い会員でログインして投稿やチェックをしています。

    ・single.phpに<?php var_dump( $my_post_object_query ); ?>を追加し、投稿オブジェクトを何か選択して投稿した場合と、してない場合で表示してみましが、どのような状態でもNULLになりました。
    ・$args['authors']=$user_id;を削除した場合、投稿オブジェクトは空欄。さらにnameをkeyに差し替えても同じ(ver dump:NULL)
    ・nameをkeyに差し替えた場合、投稿オブジェクトは選択出来るようになったが、他会員のものも混ざる最初の状態(ver dump:NULL)

    NULLになるということは、記述が間違っているということでしょうか。他の引数$args,$field,$user_idでもNULLになりました。
    宜しくお願いします。

    キャンセル

  • 2016/05/02 19:33

    > single.phpに<?php var_dump( $my_post_object_query ); ?>を追加し
    my_post_object_query の中で var_dump()をしなければあまり意味が無いと思います。(そもそも $my_post_object_query という変数はないはず)

    また、関数 my_post_object_query は functions.php に書かれていますか?もしかして single.php に書かれていますか?

    キャンセル

  • 2016/05/06 11:31

    ・var_dumpについては調べて自分なりにしてみたのですが間違った使い方をしていました。
    my_post_object_queryの中でvar_dump()で$argsが何を渡しているのか精査するにはどのようにどこで記述すれば確認できるのでしょうか?

    ・上記に書いたfunctonから始まるmy_post_object_queryはfunction.phpに書いています。

    宜しくお願い致します。

    キャンセル

  • 2016/05/11 14:30

    解決しました。長々とありがとうございました。
    ポストタイプとフィールド名を同じにしていました。

    キャンセル

  • 2016/05/11 14:41

    解決されたようでよかったです。そういえば WordPress は名前かぶりが問題になることが結構ありますよね。お役に立てませんでしたが知見を得ることが出来ました、こちらこそありがとうございます。

    キャンセル

関連した質問

同じタグがついた質問を見る

  • WordPress

    7435questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。