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

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

ただいまの
回答率

90.35%

  • PHP

    21327questions

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

  • WordPress

    7661questions

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

ツイッターの「tmhOAuth.php」で自動ツイートする際の間隔を調整したい

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 421
退会済みユーザー

退会済みユーザー

ツイッターの「tmhOAuth」を使い、自動でランダムな記事をツイートしています。

参考記事:過去記事をランダムでツイートする処理をプラグインなしで実装する

上の方法に従ってみると、どうやら1時間に1回のくらいの間隔でツイートしているようです。

この間隔は調整できないのでしょうか?

相~当検索したのですが、「ツイート間隔の調整」というのが見つかりませんでした。

【A】そもそも出来ないよ!
【B】出来るからがんばれ!

どちらでしょうか?

もし【B】ならば、「functions.php」と「tmhOAuth.php」のどちらを変えればいいかだけでも教えてくださいませ。<(_ _)>

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

回答 1

checkベストアンサー

+6

WP-Cronにアクションを登録するときに実行間隔が設定されているため、そちらを変更することで可能です。


追記
デフォルトで存在する頻度はリファレンスにある通りです。

$recurrence
(string) (required) How often the event should reoccur. Valid values:
- hourly
- twicedaily
- daily

https://codex.wordpress.org/Function_Reference/wp_schedule_event

それら以外の頻度でスケジュールしたい場合はcron_schedulesフックを使用して自分で登録します。
https://isabelcastillo.com/run-a-wp_schedule_event-recurrence-every-3-minutes

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2018/01/24 16:16

    ありがとうございます('◇')ゞ
    「functions.php」に何か追加する、、わけ、、、ですよ、ね??
    探して挑戦してみます♪

    キャンセル

  • 2018/01/24 16:31

    ありました!数字かと思ってめちゃくちゃ探してました。まさか「hourly」だったとは、、笑

    ん?でも五時間毎とかにする場合は、、???

    harf-hourly、hourly、daily、twicedaily、、、

    お恥ずかしながらこれくらいしか知らないのです、これらの一覧ってどこかにございませんでしょうか?

    キャンセル

  • 2018/01/24 17:11

    たびたびのご返信、誠にありがとうございます。たいへん勉強になりました。

    キャンセル

  • 2018/01/25 14:31

    あ、あの、、

    //Cronへ登録
    add_action('tweetcron', 'tweetPost');
    function my_activation() {
    if ( !wp_next_scheduled( 'tweetcron' ) ) {
    wp_schedule_event(time(), 'daily', 'tweetcron');
    }
    }
    add_action('wp', 'my_activation');

    これで「hourly」を「daily」にしたつもりなのですけれど、1日1回になってくれない様子です。ひょっとして「dailyは日時指定のみ有効」なのでしょうか?

    キャンセル

  • 2018/01/26 15:51

    たびたび失礼いたします。

    ご提示いただいたリンクから「cron_schedulesフックを使用して自分で登録」というのをやってみたのですが、うまくいきません。


    function my_add_intervals($schedules) {
    // 1週間に1回のスケジュールを追加する
    $schedules['weekly'] = array( // 「weekly」という名前でスケジュール登録
    'interval' => 604800, // 実行間隔
    'display' => __('Once Weekly') // 1週間おきに実行
    );
    // 1分に1回のスケジュールを追加する
    $schedules['every_1min'] = array( // 「every_30min」という名前でスケジュール登録
    'interval' => 60, // 実行間隔
    'display' => __('Every 1 minutes') // 1分おきに実行
    );
    return $schedules;
    }
    add_filter( 'cron_schedules', 'my_add_intervals'); // 「cron_schedules」フックを使ってスケジュール追加

    if ( !wp_next_scheduled( 'tweetcron' ) ) {
    wp_schedule_event(time(), 'every_1min', 'tweetcron');
    }


    こちらの書き方だと、何がマズイのか、ご教示いただけませんでしょうか?
    何卒宜しくお願い致します。。<(_ _)>

    キャンセル

  • 2018/01/27 06:41

    > これで「hourly」を「daily」にしたつもりなのですけれど、1日1回になってくれない様子です。

    WP-Cronは設定時間経過後、サイトにアクセスがあったタイミングが動くのでそのためではないでしょうか。

    > 「cron_schedulesフックを使用して自分で登録」というのをやってみたのですが、うまくいきません。

    うまくいかないとは具体的にどのような状況ですか。

    キャンセル

  • 2018/01/27 14:29 編集

    こんにちは。お休みのところご回答ありがとうございます。

    >WP-Cronは設定時間経過後、サイトにアクセスがあったタイミングが動くのでそのためではないでしょうか。

    なるほど。24時間に1回勝手にやってくれるものだと思っておりました。
    (そういう関数はないのでしょうか?)

    キャンセル

  • 2018/01/27 14:34 編集

    >うまくいかないとは具体的にどのような状況ですか。

    以前ご指摘いただいたのに、またもや要領を得ないことを書いてしまいました。もうしわけございません。

    「うまくいかない」というのは「15:51のように書いても、スケジュールが実行されない」ということです。
    その後いろいろ試して、現在次のように書いています。が、やはり変な間隔で実行されます。(仰るようにアクセスによって実行されるからでしょうか?)

    require_once dirname(__FILE__) . '/tmhOAuth-master/tmhOAuth.php';
    function tweetPost(){
    //トークンなどの設定
    $tmhOAuth = new tmhOAuth(array(
    "consumer_key" => 'xxxxx',
    "consumer_secret" => 'xxxxx',
    "user_token" => 'xxxxx',
    "user_secret" => 'xxxxx',
    'curl_ssl_verifypeer' => false
    ));

    //ツイートする記事の取得
    $post = get_posts(array(
    'numberposts' => '1',
    'orderby' => 'rand',
    'post_type' => 'post',
    'meta_key' => 'checkbox_on',
    'meta_value' => 'on',
    ));

    //ツイートするテキスト
    $params = array(
    'status' => mb_strimwidth('投稿しました。'.strip_tags($post[0]->post_title), 0, 116, "...") . ' ' . get_permalink($post[0]->ID)
    );

    //ツイートする処理
    $code = $tmhOAuth->request(
    'POST',
    'https://api.twitter.com/1.1/statuses/update.json',
    $params,
    true,
    true
    );

    }
    add_action( 'tweetPost', 'tweetPost' );

    // 2時間に1回のスケジュールを追加する
    function my_add_intervals($schedules) {
    $schedules['every_2hour'] = array(
    'interval' => 7200,
    'display' => __('Every 2hour')
    );
    return $schedules;
    }
    add_filter( 'cron_schedules', 'my_add_intervals');

    // 2時間に1回のスケジュールを実行する
    add_action('tweetcron', 'tweetPost');
    function my_activation() {
    if ( !wp_next_scheduled( 'tweetcron' ) ) {
    wp_schedule_event(time(), 'every_2hour', 'tweetcron');
    }
    }
    add_action('wp', 'my_activation');

    キャンセル

  • 2018/01/27 16:22

    https://developer.wordpress.org/plugins/cron/simple-testing/

    WP-Cronで登録したタスクを一覧表示する方法が書かれているので正常に登録されているか確認してはいかかでしょうか。
    これで正常に登録されているのが確認できれば単純にサイトへのアクセスがないためにタスクが実行されていない状況だと思います。

    キャンセル

  • 2018/01/27 16:28

    > (そういう関数はないのでしょうか?)

    アクセスがなくても実行されるようにしたいのであれば、WP-Cronではなく、通常のcronを使用してみてはいかがでしょうか。

    キャンセル

  • 2018/01/27 16:40 編集

    たびたびたびたび、誠にありがとうございます!!

    さっそくやってみましたら、なにやら実行されている様子です。が、
    下記【実行結果】のように、「hourly、twicedaily、daily、空白」などいろいろあるようです。

    これは、今までしっちゃかめっちゃかに登録したものが今になってピョコピョコと出力されているだけで、時間を置けばtwicedailyだけになるのでしょうか?
    (現在functions.phpではtwicedailyだけ書いています。)

    キャンセル

  • 2018/01/27 16:41

    my-wp-cron-test.phpの【実行結果】

    Array
    (
    [1517040689] => Array
    (
    [tweetcron] => Array
    (
    [40cd750bba9870f18aada2478b24840a] => Array
    (
    [schedule] => hourly
    [args] => Array
    (
    )

    [interval] => 3600
    )

    )

    )

    [1517042215] => Array
    (
    [upgrader_scheduled_cleanup] => Array
    (
    [bbd369736bb0c39154950bb229b7980c] => Array
    (
    [schedule] =>
    [args] => Array
    (
    [0] => 1164
    )

    )

    )

    )

    [1517069569] => Array
    (
    [wp_version_check] => Array
    (
    [40cd750bba9870f18aada2478b24840a] => Array
    (
    [schedule] => twicedaily
    [args] => Array
    (
    )

    [interval] => 43200
    )

    )

    [wp_update_plugins] => Array
    (
    [40cd750bba9870f18aada2478b24840a] => Array
    (
    [schedule] => twicedaily
    [args] => Array
    (
    )

    [interval] => 43200
    )

    )

    [wp_update_themes] => Array
    (
    [40cd750bba9870f18aada2478b24840a] => Array
    (
    [schedule] => twicedaily
    [args] => Array
    (
    )

    [interval] => 43200
    )

    )

    )

    [1517113569] => Array
    (
    [wp_scheduled_delete] => Array
    (
    [40cd750bba9870f18aada2478b24840a] => Array
    (
    [schedule] => daily
    [args] => Array
    (
    )

    [interval] => 86400
    )

    )

    [delete_expired_transients] => Array
    (
    [40cd750bba9870f18aada2478b24840a] => Array
    (
    [schedule] => daily
    [args] => Array
    (
    )

    [interval] => 86400
    )

    )

    )

    [1517113902] => Array
    (
    [siteguard_update_check] => Array
    (
    [40cd750bba9870f18aada2478b24840a] => Array
    (
    [schedule] => daily
    [args] => Array
    (
    )

    [interval] => 86400
    )

    )

    )

    [1517114050] => Array
    (
    [wpuf_remove_expired_post_hook] => Array
    (
    [40cd750bba9870f18aada2478b24840a] => Array
    (
    [schedule] => daily
    [args] => Array
    (
    )

    [interval] => 86400
    )

    )

    )

    [1517118550] => Array
    (
    [wp_scheduled_auto_draft_delete] => Array
    (
    [40cd750bba9870f18aada2478b24840a] => Array
    (
    [schedule] => daily
    [args] => Array
    (
    )

    [interval] => 86400
    )

    )

    )

    )

    wpcrontestdayo

    キャンセル

  • 2018/01/27 16:42

    >アクセスがなくても実行されるようにしたいのであれば、WP-Cronではなく、通常のcronを使用してみてはいかがでしょうか。

    どうもありがとうございます。調べてみます('◇')ゞ

    キャンセル

  • 2018/01/27 16:57

    > 下記【実行結果】のように「hourly、twicedaily、daily、空白」などいろいろあるのは、

    WordPressのコアやプラグインが登録しているものではないでしょうか。

    キャンセル

  • 2018/01/27 18:51

    ううううん、難しいですね。ちょっと整理してきます。なんどもお付き合いいただき誠にありがとうございます!!

    キャンセル

  • 2018/01/27 19:50

    イマイチわからないのですけれど、①と②ってどちらなのか、教えていただけませんでしょうか?

    twicedaily

    ➀1回アクセスされるたびに2回実行
    (アクセス数×2回)

    ➁1回でも100回でもアクセスされたら、その日のうちに2回実行
    (2回だけ)

    何度もすみません。

    キャンセル

  • 2018/01/28 06:52 編集

    1、2のどちらも正確ではなく、所定時間(twicedailyであれば12hr*60min*60sec)経過後の初回アクセスのタイミングで実行されます。

    キャンセル

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

  • ただいまの回答率 90.35%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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

  • PHP

    21327questions

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

  • WordPress

    7661questions

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