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

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

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

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

Q&A

解決済

2回答

3120閲覧

カスタム投稿の記事と固定ページのひもづけ

y_tanatana

総合スコア27

WordPress

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

0グッド

0クリップ

投稿2016/11/24 01:27

###前提・実現したいこと
いろんなお店を登録して登録している店を検索してもらうサイトを作成しています。

固定ページの1つの記事ごとにお店の詳細ページを作成して、
カスタム投稿にお店のカタログページを作成することにしました。

固定ページ(お店の詳細ページ)にカスタム投稿で作成したカタログページへのリンクを入れたいです。

ページの情報を更新するのはお店側でwordpressが全く分からない方でも更新できるようにしたいので、固定ページ(お店の詳細ページ)の記事にカタログページのIDを直で入れてリンクするという方法は避けたいです。

※カタログページ作成は1つの店舗ごとに制限はありません。
※お店ごとにログインユーザを割り当てお店情報もカタログ登録のお店側で更新します。

###実装方法について
以上の条件で私の方で考えられる方法は、
固定ページ(お店の詳細ページ)を新規作成したユーザと
カタログページへを新規作成したユーザが一致したカタログページを
固定ページ(お店の詳細ページ)にリンクとして自動で
出力される仕組みを作成するのが良いではないかと考えました。

具体的な方法が分かっていないのですが
何か便利なプラグインや参考になりそうなサイトなどありましたら教えてください。

また、別の方法が思いついた方がいらっしゃれば教えて頂けると幸いです。

宜しくお願い致します。

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

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

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

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

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

y_tanatana

2016/11/24 04:23

ご指摘ありがとうございます。実装の方向性について問うような質問で申し訳ありません。教えて頂いた参考サイトをもとに頑張ってみます。
guest

回答2

0

ベストアンサー

質問者様の考えられた実装方法でいけると思います。

固定ページ(お店の詳細ページ)を新規作成したユーザと
カタログページへを新規作成したユーザが一致したカタログページを
固定ページ(お店の詳細ページ)にリンクとして自動で
出力される仕組みを作成するのが良いではないかと考えました。

functions.phpに以下の様なフィルターフックを実装するイメージです。
ざっとコードを書いてみたので、参考にしてみてください。

PHP

1function my_function($the_content) { 2 3 // 固定ページの場合 4 if( is_page() ) { 5 6 // 固定ページを作成したユーザを取得 7 $author_id = get_the_author_meta('ID'); 8 9 // ユーザが投稿したカスタム投稿をすべて取得 10 $my_posts = get_posts(array( 'author'=>$author_id, 'post_type'=>'post', 'numberposts'=>-1)); 11 12 // カスタム投稿へのリンクを固定ページのコンテンツ下に付与 13 foreach($my_posts as $post) { 14 $link = '<a href="' . get_permalink( $post->ID ) . '">' . get_the_title( $post->ID ) . '</a>'; 15 $the_content = $the_content . $link; 16 } 17 } 18 19 return $the_content; 20} 21add_filter('the_content','my_function');

'post_type'=>'post'postはカスタム投稿タイプのスラッグへ変更してください)

フィルターフックについての概要は、以下のページを読んでみてください。
http://negimemo.net/1487

投稿2016/11/24 07:02

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2016/11/24 16:26

foreach の部分、バグじゃないですか?
kei344

2016/11/24 16:40

To: kuck1uさん 横からすいません、どのような「バグ」でしょうか。手元で動かしたわけではないのですが、問題なさそうに見えますが・・・。
y_tanatana

2016/11/25 04:06

miz様 kuck1u様 kie344様 いつもありがとうございます。 とくにphpエラーも出ずでしたが、 出力もなにも出ない状態のままでした。。。
退会済みユーザー

退会済みユーザー

2016/11/25 04:22

kuck1uさん すみません。私もどこがバグになるのかがわからないんですが、是非教えていただけますか?
退会済みユーザー

退会済みユーザー

2016/11/25 05:04

y_tanatanaさん 私の書いたコードにバグがあるかもしれませんが、よければ、functions.phpに書かれたコードを記載していただけますか?
y_tanatana

2016/11/25 07:14 編集

miz様 kuck1u様 kie344様 ご丁寧にありがとうございます。 教えて頂いたコードを参考にテンプレートに以下のように記述したところ表示されました。 <?php $posts = get_posts( array( 'post_type' => 'カスタム投稿タイプのスラッグ', 'author' => get_the_author_meta('id'), ) ); ?> <?php if($posts): ?> <section id="catalog"> <ul class="catalog-list"> <?php foreach($posts as $post): setup_postdata($post); ?> <!--表示する内容が入ります。--> <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li> <!--表示する内容ここまで--> <?php endforeach; ?> </ul> </section> <?php endif; ?> <?php wp_reset_postdata(); ?>
退会済みユーザー

退会済みユーザー

2016/11/26 09:56 編集

すみません。眠い頭でソースみていて $the_content = $the_content . $link; が毎回行われるということは…となって、アレ?となったわけです。すみません orz 本当にすみません。
退会済みユーザー

退会済みユーザー

2016/11/26 10:05

あ、特になんともないならよかったです。^^
退会済みユーザー

退会済みユーザー

2016/11/26 10:14

本当にすみません。多分なんですけれど、ソースみた時は [本文][リンク1][本文][リンク2]…になるんじゃない?と頭の中でイメージしてしまったんだと思います。冷静に考えて、そんな出力になるわけないんですけれどね(笑)お騒がせしてすみません!!
guest

0

固定ページのテンプレートでカスタム投稿取得してリンクだけ利用すればいいんじゃないですか?

投稿2016/11/24 14:17

KatsukiSugiura

総合スコア335

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

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

y_tanatana

2016/11/25 04:09

KatsukiSugiura様 ご回答ありがとうございます。 カスタム投稿の記事のIDを直接、テンプレートに書いて出力する以外で 何か出力方法がありましたら参考のサイトでも構いません、 詳しく教えて頂けないでしょうか。
KatsukiSugiura

2016/11/25 04:58

投稿取得だめならフィルターしかないですよね。 wpdbクラス使ってデータを引き出して使うか。
KatsukiSugiura

2016/11/25 05:01

データの扱い方法は基本的にフィルターで判別、wpdbクラスでDB操作、投稿取得の3パターンしかないですよね。
y_tanatana

2016/11/25 07:38

フィルター判別で解決できました。 データの扱いについてもう少し勉強します! ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問