hetemlのcronでwordpressを実行
wordpressで、毎朝10時に何かを実行したいときなどにwordpressに付属している「WP-Cron」というタイマー機能がありますが、このサイトに誰かしらがアクセスしないと実行されません。例えば10時1分に今日はじめて誰かがサイトにアクセスしたら10時1分に実行されるといういわば「疑似」タイマーです。
レンタルサーバheteml(ヘテムル)のcron機能
レンタルサーバheteml(ヘテムル)にcron機能がついていましたので、これを使いたいと思います。 とりあえず、heteml(ヘテムル)の管理画面にcronというメニューがありますので、ここで「cron」を追加します。cron の設定名 | 任意の名前 |
---|---|
日付 | 実行する日時を(分、時、日、月、曜日)から選択します。 |
実行ファイルフルパス | 実行するファイルのパスを入力します。 |
shファイル
cron.sh
#!/bin/sh /usr/local/php/7.4/bin/php /home/users/0/ユーザー名/web/フルパス/test.php exit
上の記述を「cron.sh」というファイルに記入しFTPにてサーバにUPします。
この「cron.sh」を管理画面の「実行ファイルフルパス」から設定します。
上記cron.shの中に記載ある通り、実際に実行するファイルは「test.php」としています。
私の場合、phpバージョン7.4を使用しているので上記のようになります。
なお、このshファイルはパーミッションを700に、改行コードLFに設定する必要があり、さらにFTPの転送設定はASCII(アスキー)である必要があるそうです。
phpファイル
cronから実行されたshファイルで、実際に処理するphpを呼び出しています。 タイトルにwordpressとありますが、ここではwordpressのパッケージの外に出した(なんとなく)phpファイルから wp-blog-header.phpをインポートし、wordpressの機能を使えるようにしています。test.php
<?php require_once __DIR__ . '/wordpress/wp-blog-header.php'; $args = array( 'post_type' => 'post', 'posts_per_page' => -1 ); $posts = get_posts( $args ); foreach ( $posts as $post ) : setup_postdata( $post ); //何かの処理 endforeach; ?>