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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

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

PHP

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

Q&A

解決済

3回答

2651閲覧

WPのユーザーに設定したカスタムフィールドの値でメインループに条件付したい

d-xanthus

総合スコア56

WordPress

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

PHP

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

0グッド

0クリップ

投稿2017/04/28 09:06

###前提・実現したいこと

お世話になります。
wordpressで複数の方がコラムを寄稿するサイトを運営しているのですが、何人かのユーザーを非表示とする必要が出てきました。
いつか復活することを考え、ユーザーを削除するのでは無く、アドバンスカスタムフィールドでチェックボタンを作成し、チェックのあるユーザーを非表示としたいのですが、WP_Queryに設定する方法で悩んでいます。

チェックの有るユーザーIDを変数として取得する方法等ありますでしょうか?(当然複数)
あるいは別の方法でも構いませんので、皆様のお知恵をお貸しいただければと思います。
何卒よろしくお願いいたします。

###ユーザーに設定したカスタムフィールド
フィールド名:userExclude
フィールドタイプ:true/false (真/偽)
デフォルト:false

trueとしたユーザーをループから排除したいと考えています。
現在ユーザーは60人程度いらっしゃいます。

###考えているソースコード

php

1<?php 2$args = array( 3 'author__not_in' => array( 2, 6 ) //こちらのユーザーIDを変数として取得したい 4 ); 5$my_query = new WP_Query( $args ); 6if ( $my_query->have_posts() ): 7 while ( $my_query->have_posts()) : 8 $my_query->the_post(); 9?> 10 <article> 11 ・・・ループ内容です。 12 </article> 13<?php 14 endwhile; 15 endif; ?>

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

まず除外したいユーザーのIDを取得する必要があるのでWP_User_Queryを使用してuserExcludeフィールドがtrueのユーザーを取得します。

取得したユーザーのIDを配列に格納してクエリの条件に入れればできるかと。

php

1$args = array( 2 'author__not_in' => array( $exclude_ids ),// 変数にユーザーIDを格納した配列を入れる。 3);

投稿2017/04/28 10:38

koou

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

d-xanthus

2017/04/28 11:15

koou様 早速のご回答ありがとうございます。 以下のコードで試してみましたが、 残念ながらうまく排除することができませんでした。 WP_User_Queryで対象のユーザーを取得できることは確認しましたが、 author__not_inにいれても効いていないようです。(ID番号の直打ちでは作動しました。) 何か抜けているものとかありますでしょうか? $args = array(  'meta_query' => array( array(     'key' => 'userExclude',     'value' => true,    'compare' => '='    ),    ), ); $exclude_ids = new WP_User_Query( $args ); $args = array( 'author__not_in' => array( $exclude_ids ),// 変数にユーザーIDを格納した配列を入れる。 );
d-xanthus

2017/05/01 01:21

kei344様 ご回答いただきましてありがとうございます。 返信が遅くなりまして誠に申し訳ないです。 リンクいただきましたコーデックスのフィールドパラメータの欄を参照して、いろいろ試してみましたが 私がPHPを正しく理解していないせいか、望んだような動きにまだできておりません。 おそらく正しい記載ができていないためと思います。 初心者の質問で申し訳ないのですが、対象ID配列の記載方法を ご教授いただければ幸いです。 何卒よろしくお願いいたします。 //ユーザー条件取得 $args = array(  //対象条件、上記同じ ); ▼こちら? への上記$args 対象のID配列の書き方がわかりません。 $user_fields = array( 'ID' ); // $exclude_ids = new WP_User_Query( array( 'fields' => $user_fields ) ); //本体ループ設定 $args = array( 'author__not_in' => array( $exclude_ids ), // ※array()は必須のようです。 );
guest

0

最終コードです。

php

1<?php 2$args = array( 3 'fields' => 'ID', 4 'meta_query' => array( array( 5 'key' => 'userExclude', 6 'value' => true, 7 'compare' => '=' 8 ), 9 ), 10 ); 11 $exclude_ids = new WP_User_Query( $args ); 12$args = array( 13 'author__not_in' => $exclude_ids->results, 14 ); 15$my_query = new WP_Query( $args ); 16if ( $my_query->have_posts() ): 17 while ( $my_query->have_posts()) : 18 $my_query->the_post(); 19?> 20 <article> 21 ・・・ループ内容です。 22 </article> 23<?php 24 endwhile; 25 endif; ?>

投稿2017/05/02 00:06

d-xanthus

総合スコア56

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こういうかんじで。

PHP

1<?php 2$exclude_ids = new WP_User_Query( array( 'role' => 'editor', 'fields' => 'ID' ) ); 3$my_query = new WP_Query( array( 'author__not_in' => $exclude_ids->results ) ); 4if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post(); ?> 5 <?php echo '<div>'.get_the_title().'</div>'; ?> 6<?php endwhile; wp_reset_postdata(); endif; ?>

投稿2017/05/01 13:41

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

d-xanthus

2017/05/02 00:01

kei344様 早速ご回答いただきありがとうございました。 'author__not_in'にこういう記述もできるのですね。 おかげ様で願い通りの動きにすることができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問