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

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

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

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

PHP

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

Q&A

解決済

1回答

369閲覧

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

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/01/24 06:26

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

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

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

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

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

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

どちらでしょうか?

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

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 06:50

編集2018/01/24 08:08
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/01/24 07:16

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

退会済みユーザー

2018/01/24 07:31

ありました!数字かと思ってめちゃくちゃ探してました。まさか「hourly」だったとは、、笑 ん?でも五時間毎とかにする場合は、、??? harf-hourly、hourly、daily、twicedaily、、、 お恥ずかしながらこれくらいしか知らないのです、これらの一覧ってどこかにございませんでしょうか?
退会済みユーザー

退会済みユーザー

2018/01/24 08:11

たびたびのご返信、誠にありがとうございます。たいへん勉強になりました。
退会済みユーザー

退会済みユーザー

2018/01/25 05: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 06: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/26 21:41

> これで「hourly」を「daily」にしたつもりなのですけれど、1日1回になってくれない様子です。 WP-Cronは設定時間経過後、サイトにアクセスがあったタイミングが動くのでそのためではないでしょうか。 > 「cron_schedulesフックを使用して自分で登録」というのをやってみたのですが、うまくいきません。 うまくいかないとは具体的にどのような状況ですか。
退会済みユーザー

退会済みユーザー

2018/01/27 05:30 編集

こんにちは。お休みのところご回答ありがとうございます。 >WP-Cronは設定時間経過後、サイトにアクセスがあったタイミングが動くのでそのためではないでしょうか。 なるほど。24時間に1回勝手にやってくれるものだと思っておりました。 (そういう関数はないのでしょうか?)
退会済みユーザー

退会済みユーザー

2018/01/27 05:35 編集

>うまくいかないとは具体的にどのような状況ですか。 以前ご指摘いただいたのに、またもや要領を得ないことを書いてしまいました。もうしわけございません。 「うまくいかない」というのは「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 07:22

https://developer.wordpress.org/plugins/cron/simple-testing/ WP-Cronで登録したタスクを一覧表示する方法が書かれているので正常に登録されているか確認してはいかかでしょうか。 これで正常に登録されているのが確認できれば単純にサイトへのアクセスがないためにタスクが実行されていない状況だと思います。
退会済みユーザー

退会済みユーザー

2018/01/27 07:28

> (そういう関数はないのでしょうか?) アクセスがなくても実行されるようにしたいのであれば、WP-Cronではなく、通常のcronを使用してみてはいかがでしょうか。
退会済みユーザー

退会済みユーザー

2018/01/27 07:47 編集

たびたびたびたび、誠にありがとうございます!! さっそくやってみましたら、なにやら実行されている様子です。が、 下記【実行結果】のように、「hourly、twicedaily、daily、空白」などいろいろあるようです。 これは、今までしっちゃかめっちゃかに登録したものが今になってピョコピョコと出力されているだけで、時間を置けばtwicedailyだけになるのでしょうか? (現在functions.phpではtwicedailyだけ書いています。)
退会済みユーザー

退会済みユーザー

2018/01/27 07: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 07:42

>アクセスがなくても実行されるようにしたいのであれば、WP-Cronではなく、通常のcronを使用してみてはいかがでしょうか。 どうもありがとうございます。調べてみます('◇')ゞ
退会済みユーザー

退会済みユーザー

2018/01/27 07:57

> 下記【実行結果】のように「hourly、twicedaily、daily、空白」などいろいろあるのは、 WordPressのコアやプラグインが登録しているものではないでしょうか。
退会済みユーザー

退会済みユーザー

2018/01/27 09:51

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

退会済みユーザー

2018/01/27 10:50

イマイチわからないのですけれど、①と②ってどちらなのか、教えていただけませんでしょうか? twicedaily ➀1回アクセスされるたびに2回実行 (アクセス数×2回) ➁1回でも100回でもアクセスされたら、その日のうちに2回実行 (2回だけ) 何度もすみません。
退会済みユーザー

退会済みユーザー

2018/01/27 21:54 編集

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問