pushdeer/plugins/wordpress/pushdeer_wordpress_comment_notice/pushdeer.php
2022-01-31 11:05:05 +08:00

150 lines
4.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
// require_once __DIR__ .'/helper.php';
/**
* The plugin bootstrap file
*
* This file is read by WordPress to generate the plugin information in the plugin
* admin area. This file also includes all of the dependencies used by the plugin,
* registers the activation and deactivation functions, and defines a function
* that starts the plugin.
*
* @link https://01.ftqq.com/2021/08/24/wordpress-comments-notice-plugin/
* @since 1.0.1
* @package Pushdeer_Wordpress_notice
*
* @wordpress-plugin
* Plugin Name: PushDeer通知
* Plugin URI: https://blog.ftqq.com/2021/08/24/wordpress-comments-notice-plugin/
* Description: 将WordPress通知推送到手机目前支持新评论通知
* Version: 1.0.1
* Author: Easy
* Author URI: http://blog.ftqq.com/
* Text Domain: pushdeer-wordpress-notice
* Domain Path: /languages
*/
// If this file is called directly, abort.
if (! defined('WPINC')) {
die;
}
/**
* Currently plugin version.
* Start at version 1.0.0 and use SemVer - https://semver.org
* Rename this for your plugin and update it as you release new versions.
*/
define('Pushdeer_VERSION', '1.0.1');
function ftqq_pushdeer_settings_init()
{
// 为 阅读 页面注册新设置
register_setting('discussion', 'ftqq_pushdeer_settings');
// 在阅读页面上注册新分节
add_settings_section(
'ftqq_pushdeer_settings_section',
'PushDeer',
'ftqq_pushdeer_settings_section_cb',
'discussion'
);
add_settings_field(
'ftqq_pushdeer_settings_is_on',
'是否开启PushDeer通知',
'ftqq_pushdeer_settings_is_on_cb',
'discussion',
'ftqq_pushdeer_settings_section'
);
add_settings_field(
'ftqq_pushdeer_settings_pushkey',
'Pushkey',
'ftqq_pushdeer_settings_pushkey_cb',
'discussion',
'ftqq_pushdeer_settings_section'
);
add_settings_field(
'ftqq_pushdeer_settings_author_not_send',
'不发送作者自己的评论通知',
'ftqq_pushdeer_settings_author_not_send_cb',
'discussion',
'ftqq_pushdeer_settings_section'
);
}
function ftqq_pushdeer_settings_section_cb()
{
echo "<p>通过PushDeer向手机发送通知</p>";
}
function ftqq_pushdeer_settings_is_on_cb()
{
$setting = get_option('ftqq_pushdeer_settings');
$html = '<input type="checkbox" id="ftqq_pushdeer_is_on" name="ftqq_pushdeer_settings[is_on]" value="1"' . checked(1, @$setting['is_on'], false) . '/>';
echo $html;
}
function ftqq_pushdeer_settings_pushkey_cb()
{
$setting = get_option('ftqq_pushdeer_settings');
// 输出字段?>
<input type="text" name="ftqq_pushdeer_settings[pushkey]" value=<?php echo isset($setting['pushkey']) ? esc_attr($setting['pushkey']) : ''; ?>>
<?php
}
function ftqq_pushdeer_settings_author_not_send_cb()
{
$setting = get_option('ftqq_pushdeer_settings');
$html = '<input type="checkbox" id="ftqq_pushdeer_author_send" name="ftqq_pushdeer_settings[author_not_send]" value="1"' . checked(1, @$setting['author_not_send'], false) . '/>';
echo $html;
}
/**
* 注册 wporg_settings_init 到 admin_init Action 钩子
*/
add_action('admin_init', 'ftqq_pushdeer_settings_init');
function ftqq_pushdeer_comment_send($comment_id)
{
// 读取配置
$setting = get_option('ftqq_pushdeer_settings');
// 检查配置
if (intval(@$setting['is_on']) != 1) {
return false;
}
if (!isset($setting['pushkey']) || strtoupper(substr($setting['pushkey'], 0, 3)) != 'PDU') {
return false;
}
$comment = get_comment($comment_id);
// 配置开关:如果文章作者就是评论作者,那么不发送评论
if (intval(@$setting['author_not_send']) == 1 && (get_post($comment->comment_post_ID)->post_author == $comment->user_id)) {
return false;
}
$text = '博客['.get_bloginfo('name').']有新的留言';
$desp = $comment->comment_content ."\r\n\r\n" .'[去博客查看]('.site_url().'/?page_id='.$comment->comment_post_ID.') ';
$postdata = http_build_query(
array(
'text' => $text,
'desp' => $desp
)
);
$opts = array('http' =>array(
'method' => 'POST',
'header' => 'Content-type: application/x-www-form-urlencoded',
'content' => $postdata
));
$context = stream_context_create($opts);
return $result = file_get_contents('https://api2.pushdeer.com/message/push?type=markdown&pushkey='.$setting['pushkey'], false, $context);
}
add_action('comment_post', 'ftqq_pushdeer_comment_send', 19, 2);