🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

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

PHP

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

Q&A

解決済

2回答

2244閲覧

bbpress 投稿したトピックを、投稿者自身がその後にクローズ/オープン設定する方法は?

jo-ji

総合スコア16

WordPress

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

PHP

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

0グッド

1クリップ

投稿2021/01/15 11:33

編集2021/01/31 12:46

以前の質問からの続きです。
bbpress オープンクローズ

bbpressでは、投稿後にトピックをオープン・クローズ設定できるのは管理者だけです。

これをカスタマイズして、トピック投稿者自身がいつでも好きな時に
トピック状態をクローズ・オープンするコードを教えてください。

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

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

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

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

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

guest

回答2

0

自己解決

●解決策(1) プラグインを使う

bbpressのオープン・クローズをカスタマイズできるのは、プラグイン『bbp style pack』です。

インストール後に、有効にします。そして以下の手順で設定を変えます。

ダッシュボード⇒設定 ⇒ bbp style pack ⇒ Topic/Reply Display⇒アイテム 17

トピック投稿者自身が、トピック状態(オープン・クローズ)を設定できました。
クローズ後は、誰もトピックへの返信が出来ません。

●解決策(2) プラグイン自体をカスタマイズする

bbp-style-packを部分修正して、コードを作りました。

参考にしたのは、\bbp-style-pack\includes\functions.php

参考コードは、functions.phpファイルの2066-2116行目です。

修正箇所2067-2075行目 プラグインの初期条件を除去

下記コードを、子テーマのfunctions.phpに追加(コピーペースト)しました。

// bbpress トピックのオープン・クローズ機能追加  if (is_user_logged_in()) add_action ( "bbp_theme_before_reply_admin_links", "bsp_topic_close_link" ); function bsp_topic_close_link( $args = '' ) { echo bsp_get_topic_close_link( $args ); } function bsp_get_topic_close_link( $args = '' ) { // Parse arguments against default values $r = bbp_parse_args( $args, array( 'id' => 0, 'link_before' => '', 'link_after' => '', 'sep' => ' | ', 'close_text' => _x( 'Close', 'Topic Status', 'bbpress' ), 'open_text' => _x( 'Open', 'Topic Status', 'bbpress' ) ), 'get_topic_close_link' ); $topic = bbp_get_topic( bbp_get_topic_id( (int) $r['id'] ) ); if ( empty( $topic )) return; //if not a topic but a reply to that topic, then return if (bbp_get_reply_id() != bbp_get_topic_id( (int) $r['id'] ) ) return ; //if participant and not their own topic, then return $role = bbp_get_user_role( get_current_user_id() ); if ($role == 'bbp_participant' ) { //find out if it is their own topic $author_id = bbp_get_topic_author_id( $topic->ID) ; if ($author_id == get_current_user_id()) { $display = bbp_is_topic_open( $topic->ID ) ? $r['close_text'] : $r['open_text']; $uri = add_query_arg( array( 'action' => 'bbp_toggle_topic_close', 'topic_id' => $topic->ID ) ); $uri = wp_nonce_url( $uri, 'close-topic_' . $topic->ID ); $retval = $r['link_before'] . '<a href="' . esc_url( $uri ) . '" class="bbp-topic-close-link">' . $display . '</a>' . $r['link_after']; $retval = '<span class="bbp-admin-links">'.$r['sep'].$retval.'</span>' ; return apply_filters( 'bbp_get_topic_close_link', $retval, $r ); } } else return ; }

●解決策(2)+αの機能追加

トピックを閉じると、トピックページに追記表示する(『トピック受付終了しました。』)以下PHP。
トピック一覧ページで着色する。(『グレー着色』)以下CSS。

下記コードを、子テーマのfunctions.phpに追加(コピーペースト)。

// トピッククローズのお知らせラベル function rk_closed_topics() { if ( bbp_is_topic_closed() && !bbp_is_topic_sticky() ) echo '<span class="closed">[トピック受付終了しました。]</span>'; } add_action( 'bbp_theme_before_topic_title', 'rk_closed_topics' );

上記コードの引用元 bbpress コーデックス

下記コードを、子テーマのstyle.cssに追加

/* トピック終了の文字の色 */ #bbpress-forums span.closed { color: black; } /* (続)閉じたトピック着色 */ #bbpress-forums .status-closed, #bbpress-forums .status-closed a { background-color: gray; content: "トピック終了"; border-radius: 10px; } /* トピックオープン・クローズのリンク着色 */ #bbpress-forums a.bbp-topic-close-link { background: red; border: 5px solid black; border-radius: 20px; margin-bottom: 150px; color:whitesmoke; }

(注意) 全角スペースが入っていて、エラー表示するかも。

投稿2021/01/19 16:11

編集2021/02/10 01:58
jo-ji

総合スコア16

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

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

0

提示されたコードでどこまで実装出来ているのか、そのコードで権限があるアカウントならオープン/クローズできるのか不明だが。

プラグイン使ったどうだ?
bbResolutions
https://wordpress.org/plugins/bbresolutions/

投稿2021/01/18 03:50

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

jo-ji

2021/01/18 10:36

情報提供、ありがとうございました。 bbResolutions使ってみました。 インストール後、有効にしただけで、返信ページに セレクトボックスが表示されました。 英語名、Not Resolve , Resolveなど、bbpressのトピックのオープン、クローズに似てますね。 ただ、Resolve設定にしても、コメントは書き込めるようです。 これが、クローズ設定とは違うところですね。 未完成のプログラムがうまく動かない時、使わせていただきます。
退会済みユーザー

退会済みユーザー

2021/01/18 11:31

一応、疑問に応えてもらってもいいかな?
jo-ji

2021/01/18 12:35 編集

>>(bbResolutions)プラグイン使ったどうだ? トピックのオープン・クローズに関係しない機能は、全く使っていません。 現時点では、使うか使わないか決めていません。
退会済みユーザー

退会済みユーザー

2021/01/18 13:54

提示されたコードでどこまで実装出来ているのか、そのコードで権限があるアカウントならオープン/クローズできるのか不明だ
jo-ji

2021/01/19 02:09 編集

古い質問内容は、新しく書き替えました。(回答1件目は、古い質問内容に対しての回答です。)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問