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

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

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

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

1回答

4257閲覧

Wordpress:ログイン中のユーザーが投稿した記事のみ一覧表示したいです

moroheia

総合スコア14

WordPress

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2017/09/11 07:49

###前提・実現したいこと
WORDPRESSで会員制の投稿サイトを作成しています。

カスタム投稿と「User frontend(プラグイン)」を使用し
会員登録したユーザーのみが、フロントページから投稿することができる仕組みです。

そこで、カスタム投稿のみが一覧表示されるアーカイブページのテンプレートを作っているのですが
ログインしているユーザーの投稿のみを表示させることができません。
何か良い方法はないでしょうか。

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

query_posts()を用いて投稿者を指定しているが 「記事がありません」に分岐してしまいます。

###該当のソースコード

<?php query_posts('author=test&showposts=5');?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <div class="entry hentry"> <h3 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h3> <p>ID:<?php the_field("id", $post->ID); ?></p> <?php endif; ?> <p class="entry-more"><a href="<?php the_permalink() ?>">詳しくはこちら >></a></p> </div> <?php endwhile; else : ?> <p>記事がありません</p> <?php endif; ?> <?php if (have_posts() && function_exists("pagination")) { // 一覧ページネーション pagination($wp_query->max_num_pages); } ?>

###試したこと
上記に記載しているarchive.phpを修正してログイン中のユーザーのみの記事一覧を表示するか
投稿者アーカイブを用いてログイン中のユーザーのみの記事一覧を表示したいです。

後者の場合、ログイン中のユーザー名をカスタムリンクで指定する方法が知りたいです。

###補足情報(言語/FW/ツール等のバージョンなど)
wordpress

使用プラグイン
・User frontend
・WP User Frontend Pro
・Custom Post Type Permalinks

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

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

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

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

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

guest

回答1

0

ベストアンサー

query_postsは推奨されてないのでWP_Queryを使いましょう。
wp_get_current_userでログインユーザー情報を取得できます。

関数リファレンス/WP Query
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query

Function Reference/wp get current user
https://codex.wordpress.org/wp_get_current_user

追記
ふと気付きましたが、提示されたコードの6行目の<?php endif; ?>は、このままのコードだと要りません。と言うかエラーになるはずです。

追記
こんな感じで

<?php $current_user = wp_get_current_user(); $user_id = $current_user->ID; $query = new WP_Query( array( 'author' => $user_id, 'posts_per_page' => 5, ) ); if ( $query->have_posts() ): while ( $query->have_posts() ): $query->the_post(); ?>

投稿2017/09/11 13:11

編集2017/09/12 01:49
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

moroheia

2017/09/12 01:23

ご回答頂き、誠にありがとうございます。 リンク先の内容を参考にし、 <?php query_posts('author=test&showposts=5');?> の部分を、下記の通り書き換えましたが 全ての記事が表示されてしまうままです。 ------------------------------------------- <?php $current_user = wp_get_current_user(); ?> <?php $query = new WP_Query( 'author= $current_user->ID' ); ?> ------------------------------------------- 恐れ入りますが、誤りがないかご確認いただけますでしょうか? また、6行目の<?php endif; ?>について削除漏れがありました。 ご指摘ありがとうございます。
退会済みユーザー

退会済みユーザー

2017/09/12 01:49

$queryがループで使われてないだけではないですか? 回答に追記しました。
moroheia

2017/09/12 02:14

$queryをループに含めるように修正しました。 大変失礼いたしました。 また、カスタム投稿を利用していたため、 'post_type' => 'post_name', を追記することで、無事に表示されるようになりました。 phpは不慣れで、様々な記事をみては迷っていたため 今回アドバイスを頂き、大変助かりました。 本当にありがとうございました。 色々試しながら知識を深めるように精進します!
退会済みユーザー

退会済みユーザー

2017/09/12 02:19

あ…カスタム投稿でしたね。失礼しました。
moroheia

2017/09/12 02:36

私も表示されないのをみて初めて設定が欠けていることに気づいたくらいなので・・・(^^; ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問