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

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

ただいまの
回答率

90.51%

  • PHP

    24085questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    8948questions

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

複数のカスタム投稿タイプのどちらについても限定公開相手として指定する方法

受付中

回答 0

投稿 編集

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

chikachi

score 9

実現したいこと

WordPressを使い、複数のカスタム投稿タイプで、記事の限定公開機能を実現したいです。

前提

記事のカスタムフィールド「allowedusers」に、限定公開相手を入力しています。

たとえば、1さんと2さんが限定公開相手として許可されているケースでは、次のようなユーザーIDの配列が記事の「allowedusers」に入力されます。

array('1','2');

今回ぶつかった問題ですが、記事のカスタム投稿タイプが「service」と「comment」のように複数あるケースです。

発生している問題・エラーメッセージ

下のソースコードをご覧いただきたいのですが、「特定のユーザーが投稿したものについて、カスタム投稿タイプ「service」の限定公開相手に閲覧者自身が含まれているかどうかを判定する」ということはできていると思います。

しかし、カスタム投稿タイプ「service」と「comment」に合わせて、限定公開相手のカスタムフィールドも「service_allowedusers」と「comment_allowedusers」と区別して作らないといけないと思います。

この場合、meta_query でどのように指定したらいいのかわからない、という壁にぶつかってしまいました。

該当のソースコード

$uid = '' // 特定のユーザーが投稿したものについて
$args = array(
    'posts_per_page' => 15,
    'post_type' => array('service', 'comment'),
    'author' => $uid,
    // カスタム投稿タイプ「service」の限定公開相手に閲覧者自身が含まれているどうかを判定
    'meta_query' => array(
        'relation'=>'OR',
        array(
            'key' => 'service_allowedusers',
            'value' => get_current_user_id(),
            'compare' => 'LIKE',
            'type'=>'NUMERIC'
        ),
        array(
            'key' => 'service_allowedusers',
            'value' => '',
            'compare' => 'NOT EXISTS',
        ),
        array(
            'key' => 'service_allowedusers',
            'value' => '',
            'compare' => '=', 
        ),                                        
    ),        
    // では、「comment」の分はどうしたらいいのか?
);

試したこと

自分なりにかなり調べたのですが、複数のカスタム投稿タイプのどちらについても限定公開相手として指定する方法は見当たらず、質問させていただくことになってしまいました。

ご経験のある方からのご意見が頂戴できましたら幸いです。

補足情報(FW/ツールのバージョンなど)

必要な情報かわかりませんが補足としてこまかな点を記載させて頂きます。

仕組みとしては、「service」の記事に「comment」が入るというものです。なので基本的に「service」と「comment」は同じ限定公開相手になります。

たとえば「service」の限定公開相手が1さんと2さんならば、「comment」の限定公開相手も自動的に同じになります。

ただし、途中で「service」の限定公開相手を変更することもありますので、変更後は同様とは限りません。

バージョンについては特筆すべきことはありません。WordPressも随時アップデートしていて最新のものを利用しています。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正の依頼

  • CHERRY

    2019/05/20 19:07 編集

    > 仕組みとしては、「service」の記事に「comment」が入るというものです。なので基本的に「service」と「comment」は同じ限定公開相手になります。

    が、わかりにくいです。

    具体的な例を上げて記載していただくことは可能でしょうか?


    あと、カスタムフィールドの「キー名」を分けているのには、なにか意味があるのでしょうか?

    キャンセル

まだ回答がついていません

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

  • PHP

    24085questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    8948questions

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