WP:会員が記事を投稿でき、記事下部に予め登録した作品情報を挿入したい
- 評価
- クリップ 0
- VIEW 1,440
前提・実現したいこと
会員が記事を投稿でき、記事下部に予め登録した作品情報を挿入したい。
実現したいこと(出来た)
・会員がカスタム投稿タイプで作品情報を自由にいくつでも登録できるようにする。
(プラグインCustom Post Type UIでカスタム投稿タイプ「sakuhin」を作成)
・登録したものを通常投稿で選択することができ、記事に情報を挿入することができる。(例:店舗情報のようなもの)
(プラグインAdvanced Custom Fieldsで、フィールドタイプを「投稿オブジェクト」、投稿タイプをカスタム投稿名「sakuhin」にして通常投稿で選択出来るようにし、各項目の情報をタグで呼び出しした)
実現したいこと(出来ない)
・会員それぞれがカスタム投稿で作品情報を登録できるので、他の会員が見たり編集したりしない様には出来たのですが、通常投稿で挿入する作品情報を選択するとき、他会員の情報も選択できてしまう。
・自分が作成したカスタム投稿(作品情報)だけを選択出来るようにしたい。
ここまではネット上で調べ出来たのですが、以上のことがどうしても出来ません。
このやり方も我流なので、これより他に良い方法があればご教授願います。
足りない情報があれば追記致しますので宜しくお願いします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
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/
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
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
my_post_object_query の中で var_dump()をしなければあまり意味が無いと思います。(そもそも $my_post_object_query という変数はないはず)
また、関数 my_post_object_query は functions.php に書かれていますか?もしかして single.php に書かれていますか?
2016/05/06 11:31
my_post_object_queryの中でvar_dump()で$argsが何を渡しているのか精査するにはどのようにどこで記述すれば確認できるのでしょうか?
・上記に書いたfunctonから始まるmy_post_object_queryはfunction.phpに書いています。
宜しくお願い致します。
2016/05/11 14:30
ポストタイプとフィールド名を同じにしていました。
2016/05/11 14:41