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

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

ただいまの
回答率

90.48%

  • PHP

    20912questions

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

  • JavaScript

    17082questions

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

  • WordPress

    7470questions

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

  • MySQL

    6038questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 985

hirororo

score 56

とても困っています。

プログラミング初心者で、
ある塾の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 );

?>

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

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • hirororo

    2016/05/06 19:04 編集

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

    キャンセル

  • 退会済みユーザー

    2016/05/06 19:12

    こちらの質問が他のユーザから「やってほしいことだけを記載した丸投げの質問」という指摘を受けました
    「質問を編集する」ボタンから編集を行い、調査したこと・試したことを記入していただくと、回答が得られやすくなります。

  • ayaneko

    2016/05/06 20:39

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

    キャンセル

回答 2

checkベストアンサー

+3

書かれている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/05 20: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に保存するするということでしょうか?


    お手数おかけしますが、
    時間の許す限り
    よろしくお願いいたします。

    キャンセル

  • 2016/05/05 21:23

    どなたもコメントされずマイナス評価だけだったので書かせてもらったわけですが…

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

    キャンセル

  • 2016/05/12 03:02 編集

    コメントして頂きやすいタイトル、内容にするのはとても大事ですよね。具体的な質問が出来るように調べ直してきます。

    送って頂いたドットインストールの講座、とても勉強になりますね!ありがとうございます!

    キャンセル

+1

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

$time1 = strtotime($current_user->user_registered);
$time2 = strtotime(date('Y/m/d H:i:s'));
$seconddiff = abs($time2 - $time1);
$diff = $seconddiff / (60 * 60 * 24);
$daydiff = floor($diff) + 1;

$paged = get_query_var('paged');
query_posts( array(
    'orderby'          => 'date',
    'order'            => 'desc',
    'posts_per_page'   => $daydiff,
  ) );
 // WordPress ループ

wp_reset_query();

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/12 02:56

    送って頂いたコードを理解するためのに、調べているのですがまだ時間がかかりそうです。

    具体的な質問が出来るレベルまでコードを理解出来たらまたコメントさせて頂きます。

    取り急ぎですが、お礼をさせて下さい、具体的なアドバイスをありがとうございます!

    キャンセル

  • 2016/05/13 18:55

    何とかコードを理解することが出来ました!

    とても分かり易いコードを送って頂いてありがとうございます。

    1つだけどうしても理解出来なかった点があります。

    $daydiff = floor($diff) + 1;

    の+ 1の部分なのですが、

    $diff = $seconddiff / (60 * 60 * 24);

    こちらで算出された秒数に1秒を加えるということでしょうか?


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





    キャンセル

  • 2016/05/13 19:01 編集

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

    キャンセル

  • 2016/05/24 19:34

    おかげで理解出来ました!

    ありがとうございます!

    キャンセル

関連した質問

  • 解決済

    PHP:訪れたユーザーの正確な環境を取得する方法

    ユーザーが使用しているブラウザ名とバージョンの取得方法について質問します。 色々試してみたのですが、正確な名前とバージョンがわかりませんでした。 次のコードを試しています。 $

  • 受付中

    PHPのセッションを利用したフォームについて

    PHPの入力フォームからセッションを利用してエラーチェックがない場合 次の確認画面にページ遷移させたいと思っています。 POSTでやった場合は、エラーチェック後確認画面へページ推

  • 解決済

    PHPとMySQLを利用したOR検索の結果表示が意図通りにならない

    失礼します。 phpとmysqlを利用したショッピングカートのシステムを作ることになったので、まず商品検索→検索結果の表示の部分から作ろうと思ってコードを書いたのですが、タイトル通

  • 解決済

    PHPでページングのやり方

    あるDBからSELECtで検索をかけて結果を 配列$resultに入れているとします。 ページングの関数を作って処理したいのですが、 このあとどのようなプログラムを書けばよいのか

  • 解決済

    二つのサイトに重複するデータを同時に登録したい

    お世話になっております。 題名の通り、サイトAで会員の登録をした際、サイトBにも共通項を登録したいです。 CURLのセッションを引き継ぐ方法を参考にして ・サイトAで必要事項を

  • 解決済

    cookieの理解について

    PHP初心者の者です。 現在、cookieについて書籍で学習しておりますが、以下のcookieの理解に苦しんでいます。 お力をお貸しいただければと思います。 ①以下のコー

  • 解決済

    ページング処理の実装について

    今現在DBへ試しに20件のデータが入っており、下記記述で20人分の表示がされている状態です。 1ページに5件づつ表示させたくて、色々とサイトを見て回っているのですが、 最初

  • 解決済

    WPカスタム投稿の連番ループについて

    前提・実現したいこと いつもお世話になっております。 WordPressのカスタム投稿タイプのアーカイブページで、記事一覧に連番を振り分けています。 ですが、今コードだと2ページ目

同じタグがついた質問を見る

  • PHP

    20912questions

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

  • JavaScript

    17082questions

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

  • WordPress

    7470questions

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

  • MySQL

    6038questions

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

  • トップ
  • PHPに関する質問
  • ユーザー登録を行った日から経過した日数に応じた数の記事を閲覧できるようにしたい