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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

WordPress

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

2640閲覧

ユーザー登録を行った日から経過した日数に応じた数の記事を閲覧できるようにしたい

hirororo

総合スコア72

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

WordPress

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

PHP

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

1クリップ

投稿2016/05/04 15:32

編集2016/05/06 10:09

とても困っています。

プログラミング初心者で、
ある塾のWordpressサイトを運営しています。

取引先で期限付きでサイト作成を依頼され、
自分自身がプログラミング初心者だということと期限内に必ず達成させたいという思いで書かせて頂きます。

PHPとSQLを使って
ユーザー登録を行った日から
経過した日数に応じた数の記事を
閲覧できるようにするには
どうすればいいでしょうか?

出来れば1日おきに
自動で記事を更新出来るように
設定したいと考えています。

例えば、
AさんとBさんがいたとします。

Aさんは、新規会員登録して、
まだ初日なので、
1記事だけ見れる
(1つ目の記事以外は画面に
表示されず隠れた状態)

一方Bさんは新規会員登録してから、
10日経ったので、10記事を閲覧できる

と言ったシステムを導入したいのです。

■試してみたこと

▷ワードプレスプラグイン
・WP-member
・simple membership

ユーザーに権限(ランクみたいなもの)を設定して、見られるページ見られないページを設定するプラグインです

▷参考にしているサイトの一部

・初心者PHP入門
http://www.standpower.com

初心者 PHP 講座
https://youtu.be/O1-C_HY50Ug

▷検索エンジンでの入力した一部

・ワードプレス
新規登録 記事自動更新

・プログラミング 記事自動更新

・PHP 初心者

▷考えてみたPHP文

<?php $count=登録日時 if ($count < 24h) { "1 ";} //記事の1ページまで表示 elseif (48h > $count > 24h) { "1-2";} //記事の1から2ページまで表示 elseif (72h > $count > 24h) { "1-3";} //記事の1から3ページまで表示 Print_r( $count ); ?>

今も尚、調べてますが数週間調べても
解決に至らず、
ご教授して頂ければ幸いです。

よろしくお願いいたします。

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

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

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

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

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

yodel

2016/05/05 20:39 編集

【緊急】みたいなタグは入れない方が良いと思います。 実際に試行錯誤してみて躓いている内容を書いた方が良いと思います。
ayaneko

2016/05/06 08:36

タイトルが質問内容と一致しておらず適切ではありません。「毎日自動で記事を更新」と言うと、一般的には「既に投稿された記事の内容を毎日自動で更新する」または「毎日自動で記事を投稿する」という意味に捉えられるでしょう。hirororoさんの求める要件は「ユーザー登録を行った日から経過した日数に応じた数の記事を閲覧できるようにしたい」というものではないでしょうか。 それと「緊急」とタイトルにありますがこれはhirororoさんからすると「解決方法が分からず困っているので助けて下さい」という事なのでしょう。しかしhirororoさん以外の人が見た時これは「早く答えろ」と言っているのと同義であり何ら重要ではない情報です。大変印象が悪いのでその様な無意味な言葉を書き加える事はお止めになられた方が良いでしょう。但し「早く自分の望む機能を実装したい」などという身勝手な理由ではなく本当に即座に回答を得て対応しなければならないほどの重大な理由があるのであれば話は別です。その様な重大な理由があるのであれば質問文にその旨を書き添えると良いでしょう。 またタグに「Java」がありますがこちらの質問とは関係がありません。外された方が良いでしょう。
hirororo

2016/05/06 10:10 編集

タイトルのつけ方で不愉快な思いをされる方もおられるということを想像してませんでした、以後気をつけます。 取引先で期限付きのサイト作成を依頼され、 自分自身がプログラミング初心者だということと期限内に必ず達成させたいという思いで、緊急と書かせて頂きました。 「ユーザー登録を行った日から経過した日数に応じた数の記事を閲覧できるようにしたい」という内容で間違いありませんので、タイトルを変更します。 ご指摘ありがとうございます!
ayaneko

2016/05/06 11:39

依頼を引き受けた以上それはご自身の責任だと思いますし自己解決が出来ないのであれば外注した方が良いのではないかと思いますがここでは一旦置いておきましょう。質問文に関してですが「10日経ったので、10記事を閲覧できる」という部分の条件を明確にした方が良いでしょう。閲覧出来る様になる記事はユーザーが自由に選択出来るのか又は指定した記事を閲覧させるのか或いは単純に日付が古い記事から順に閲覧出来る様にするのか等々。曖昧な質問では回答を得る機会も正確な回答を得る事も難しくなりますので用件を明確にする事をお勧めします。
guest

回答2

0

ベストアンサー

書かれているWordpressのプラグインは使ったことないのでよく分かりませんが、ユーザーに権限というかランクを設定して、見られるページ見られないページを設定するようなものではないですか?だとしたら、やりたいことを実現するためには、プラグインそのものを改造する必要があると思います。結構めんどいですし、プラグインのアップデートに対応できなくなります。

登録日から経過した日数に応じて閲覧可能ページが増えるというのであれば、PHP+DBで作るのが早いと思います。まずデータベース(MySQLなど)にユーザーテーブルを作って、ユーザー情報だけではなく登録日も収納。ユーザーがシステムにログインした時に、その日付と登録日を比較して24時間未満であれば1ページ、24時間以上48時間未満であれば2ページという感じでしょうか。それをPHPから処理する流れ。

select contents from contents_tbl order by time DESC limit $count

contents_tblには閲覧できるページの情報が入っている仮定で、$countには事前に算出したそのユーザーが見られるページ数が動的に入ります。ただこのSQL文だと、ユーザーが見られるコンテンツは最新のものからいくつ遡れるかという処理になりますので、もっと過去に遡ってコンテンツを見るというのであれば、そのユーザーが今までどのコンテンツを見たかという回数や情報も、DB内に収納する必要があります。

投稿2016/05/04 19:12

capella

総合スコア45

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

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

hirororo

2016/05/05 11:24

ご丁寧にありがとうございます! おっしゃる通り、ユーザーに権限(ランクみたいなもの)を設定して、見られるページ見られないページを設定するプラグインで間違いありません。 アドバイスを元に、 PHP、SQL文を考えてみましたので、 アドバイスを頂けますでしょうか? ▷PHP文 <?php $count=登録日時 if ($count < 24h) { "1 ";} //1まで表示 elseif (48h > $count > 24h) { "1-2";} //1から2ページまで表示 elseif (72h > $count > 24h) { "1-3";} //1から3ページまで表示 Print_r( $count ); ?> ▷MySQL文 >contents_tblには閲覧できるページの情報が入っている仮定で WordPressに保存してある記事の情報を SQLに保存するするということでしょうか? お手数おかけしますが、 時間の許す限り よろしくお願いいたします。
capella

2016/05/05 12:23

どなたもコメントされずマイナス評価だけだったので書かせてもらったわけですが… PHP文を追記されていますが、これは実際に動かしてみましたか?実際に動かしてみて、どこがおかしいのか、どこが分からないのかを質問した方がより具体的だと思います。もし、WordpressもPHPもSQLもちんぷんかんぷんなのでしたら、ドットインストールあたりで独学することをお勧めします。 http://dotinstall.com/
hirororo

2016/05/11 18:27 編集

コメントして頂きやすいタイトル、内容にするのはとても大事ですよね。具体的な質問が出来るように調べ直してきます。 送って頂いたドットインストールの講座、とても勉強になりますね!ありがとうございます!
guest

0

期限内かはわかりませんが、お使いのthemeファイルの内容がお分かりでPHPを編集することができるのであれば、例えばこんな形でループを回せば固定ページに実装できるかと存じます。

PHP

1$time1 = strtotime($current_user->user_registered); 2$time2 = strtotime(date('Y/m/d H:i:s')); 3$seconddiff = abs($time2 - $time1); 4$diff = $seconddiff / (60 * 60 * 24); 5$daydiff = floor($diff) + 1; 6 7$paged = get_query_var('paged'); 8query_posts( array( 9 'orderby' => 'date', 10 'order' => 'desc', 11 'posts_per_page' => $daydiff, 12 ) ); 13 // WordPress ループ 14 15wp_reset_query();

投稿2016/05/07 07:35

callmehappening

総合スコア91

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

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

hirororo

2016/05/11 17:56

送って頂いたコードを理解するためのに、調べているのですがまだ時間がかかりそうです。 具体的な質問が出来るレベルまでコードを理解出来たらまたコメントさせて頂きます。 取り急ぎですが、お礼をさせて下さい、具体的なアドバイスをありがとうございます!
hirororo

2016/05/13 09:55

何とかコードを理解することが出来ました! とても分かり易いコードを送って頂いてありがとうございます。 1つだけどうしても理解出来なかった点があります。 $daydiff = floor($diff) + 1; の+ 1の部分なのですが、 $diff = $seconddiff / (60 * 60 * 24); こちらで算出された秒数に1秒を加えるということでしょうか? よろしくお願い致します。
callmehappening

2016/05/13 10:02 編集

お役に立てて光栄です! この+1は本日登録してもらったユーザーに1投稿目を閲覧可能にするためのものです。 +1しなければ登録してもらった次の日から一つ目の投稿が閲覧できます。 登録日と本日の差を計算しているだけなので、+1がなければposts_per_pageが0になります。
hirororo

2016/05/24 10:34

おかげで理解出来ました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問