我查看了这两个插件的文档,似乎这可以相对容易地完成,因为这两个插件都提供了很好的操作挂钩。
根据WP Twilio docs,您应该能够“在几乎任何WordPress操作上发送文本消息”,他们甚至提供simple example of how to that. 我会尝试使用该函数并将其挂接到另一个插件的操作中。
至于前端PM插件,似乎有一个ice action hook:
do_action( \'fep_action_message_after_send\', $message_id, $message, $inserted_message );
在使用前端UI后,每次将消息保存到DB中时,都会执行此操作,因此它似乎是插入SMS发送功能的理想场所。你甚至可以在这个钩子中获得消息数据,非常酷,我们会使用它!
总之,我会尝试这样的方式:
使用Twilio的示例创建一个发送SMS的函数,所有参数都取自上述挂钩:
function send_sms_with_twilio( $message_id, $message, $inserted_message ){
// Now the $message should be an array with Front End PM data,
// so just check the plugin\'s code to determine what data you want to pass to a text message.
// i\'ll do a simple example:
$sms_message = \'\';
if ( is_array( $message ) && ! empty( $message[\'message_title\'] ) ) {
$sms_message = sprintf( \'Hello mate, you have received a new PM titled "%s"\', esc_html( $message[\'message_title\'] ) );
}
// [message_to_id] key should contain WP users ID\'s, again - you should doublecheck that
$receivers = ! empty( $message[\'message_to_id\'] ) ? (array) $message[\'message_to_id\'] : [];
// Now I\'m not sure where you keep phone numbers, but let\'s assume it\'s in user\'s meta, so I\'ll try this
// assuming \'phone_number\' is right meta key:
foreach( $receivers as $receiver ){
$to = get_user_meta( $receiver, \'phone_number\', true );
// Let\'s send this message finally! But only if we have a number and text.
// you probably should do some additional validation here
// to make sure that the phone number is properly formatted.
if ( empty( $to ) || empty( $sms_message ) ) {
return;
}
// this is Twilo\'s plugin function
twl_send_sms( [
\'number_to\' => $to,
\'message\' => $sms_message,
] );
}
}
现在,您可以将您的功能挂接到前端PM的挂钩上:
add_action( \'fep_action_message_after_send\', \'send_sms_with_twilio\', 100, 3 );
请记住,我在这里所做的只是基于我在插件代码中看到的内容的一个快速草稿。我还没有测试过它,但它应该能让您大致了解如何解决您的问题。
问题可能是把代码放在哪里-我想你可以试试你的主题functions.php
但仅用于测试目的,并且当您确定两个插件都处于活动状态时。出于生产目的,我将其作为第三个插件进行分离,并使用is_plugin_active() 函数以确保所有依赖项都已就位。