Subscribe2の改造(記事一覧の接頭文字変更と更新記事も掲載)

wordpressのメールマガジンを発行するPluginでSubscribe2をHP運営担当者が管理している「あるHP」で利用している。

仕事上、頻繁に新着記事や更新記事、はたまた固定ページを更新しているので、全てを手動でお知らせするには限界があるので、「Subscribe2」は重宝している。

が、そのままインストールして、使用していると、更新されたときはお知らせしないのと接頭文字(ダイジェスト版を利用しているので一覧表示されるときの接頭文字)がアスタリスクで気に入らないので、改造することにした。

なお、改造は自己責任でおこなうこと。またプラグインが更新されると変更箇所が上書きされるおそれがあることを記しておく。

さて対象のプラグインのバージョンは8.2である。また、当方では、1日1回お知らせを送信するダイジェスト版を使用している。

記事が新着か否かを判定しているソースファイルは、「subscribe2/classes/class-s2-core.php」である。

更新記事も知らせたい

記事の投稿された日時(post_date)をもとに新着か否かを判定しているので、記事更新時間(post_modified)をもとに判定するように変更した。

1415-1427行にある

if ( $resend == ‘resend’ ) {
if ( $this->subscribe2_options[‘cron_order’] == ‘desc’ ) {
$posts = $wpdb->get_results(“SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_date, post_author FROM $wpdb->posts WHERE post_date >= ‘$last’ AND post_date < ‘$prev’ AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_date DESC”);
} else {
$posts = $wpdb->get_results(“SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_date, post_author FROM $wpdb->posts WHERE post_date >= ‘$last’ AND post_date < ‘$prev’ AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_date ASC”);
}
} else {
if ( $this->subscribe2_options[‘cron_order’] == ‘desc’ ) {
$posts = $wpdb->get_results(“SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_date, post_author FROM $wpdb->posts WHERE post_date >= ‘$prev’ AND post_date < ‘$now’ AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_date DESC”);
} else {
$posts = $wpdb->get_results(“SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_date, post_author FROM $wpdb->posts WHERE post_date >= ‘$prev’ AND post_date < ‘$now’ AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_date ASC”);
}
}

if ( $resend == ‘resend’ ) {
if ( $this->subscribe2_options[‘cron_order’] == ‘desc’ ) {
$posts = $wpdb->get_results(“SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_modified, post_author FROM $wpdb->posts WHERE post_modified >= ‘$last’ AND post_modified < ‘$prev’ AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_modified DESC”);
} else {
$posts = $wpdb->get_results(“SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_modified, post_author FROM $wpdb->posts WHERE post_modified >= ‘$last’ AND post_modified < ‘$prev’ AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_modified ASC”);
}
} else {
if ( $this->subscribe2_options[‘cron_order’] == ‘desc’ ) {
$posts = $wpdb->get_results(“SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_modified, post_author FROM $wpdb->posts WHERE post_modified >= ‘$prev’ AND post_modified < ‘$now’ AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_modified DESC”);
} else {
$posts = $wpdb->get_results(“SELECT ID, post_title, post_excerpt, post_content, post_type, post_password, post_modified, post_author FROM $wpdb->posts WHERE post_modified >= ‘$prev’ AND post_modified < ‘$now’ AND post_status IN ($status) AND post_type IN ($type) ORDER BY post_modified ASC”);
}
}

に変更した。

記事一覧接頭文字を「*(アスタリスク)」から「●(黒丸)」へ変更

アスタリスクでは、なんとなくイヤだったので、黒丸に変更することにした。

1487-1488行にある

('' == $table) ? $table .= "* " . $post_title : $table .= "\r\n* " . $post_title;
('' == $tablelinks) ? $tablelinks .= "* " . $post_title : $tablelinks .= "\r\n* " . $post_title;

('' == $table) ? $table .= "●" . $post_title : $table .= "\r\n●" . $post_title;
('' == $tablelinks) ? $tablelinks .= "●" . $post_title : $tablelinks .= "\r\n●" . $post_title;

に変更した。

php素人が改造するので、完全にソースコードを理解しているわけではないが、一応動作したということで満足している。

なお、表示しているソースコードは右端が切れているのでコピーして使用することはできないかもしれない。

ちなみに、ダイジェスト版(1日1回)以外の動作は検証していない。

カテゴリーweb