续上回,因为朋友想建二次元社区网站,所以我帮他开发网站。我觉得社区网站多多少少用户发文章需要被打回把,但wordpress打回文章到草稿没有任何功能会告知用户!这就很离谱了。于是我就写了条代码实现管理员能够在后台写打回原因并发送给用户。
代码
首先得知道Zibll是如何调用发送私信的。这里我先找到了发送私信的ajax代码的位置:/inc/functions/message/functions/ajax.php:176 function zib_ajax_send_private()。之后就可以根据这个代码写自己的发送私信的函数:
function send_private_message($data){
//设置浏览器缓存限制提交的间隔时间
$receive = $data['msg'];
$expire = time() + 3;
//登录用户验证
$user_id = !empty($data['send_user']) ? $data['send_user'] : 1;
//黑名单验证
//联网合规性判断
$msg_args = array(
'send_user' => $user_id,
'receive_user' => $data['receive_user'],
'content' => $receive,
'parent' => '',
'status' => '',
'meta' => '',
'other' => '',
);
$msg = Zib_Private::add($msg_args);
if (!$msg) {
echo (json_encode(array('error' => 1, 'ys' => 'danger', 'msg' => '操作失败')));
exit;
}
$html = Zib_Private::get_msg_box($msg, $user_id);
return '消息已发送';
}
把这个函数放到functions.php 中即可。
$data = {
‘msg’ = ‘ 发送的话’,
‘send_user’ = ‘发送用户的ID,是数字,不是字符串’,
‘receive_user’ = ‘收信用户的ID,是数字’
}
之后加入另一个代码:
<?php
//注册meta box
add_action( 'add_meta_boxes', 'init_fallback_private_message' );
function init_fallback_private_message() {
add_meta_box(
'fallback_msg',
'打回理由',
'fallback_private_message',
'post',
'normal',
'low'
);
}
//然后在配置参数里面指定回调函数,我们需要在这个函数里面创建表单:
function fallback_private_message($post) {
// 创建临时隐藏表单,为了安全
wp_nonce_field( 'fallback_private_message', 'fallback_private_message_nonce' );
// 获取之前存储的值
$value = get_post_meta( $post->ID, '_fallback_msg', true );
?>
<label for="fallback_msg"></label>
<p>输入打回原因,不填写则不发送</p>
<input type="hidden" name="fallback_msg" id="fallback_msg" value="<?php echo esc_attr( $value ); ?>'" />
<textarea cols="60" rows="3" style="width:100%;" name="fallback_msg"><?php echo esc_attr( $value ); ?></textarea><br />
<ul>
<?php
$prev_feedback_msg = get_post_meta( $post->ID, '_prev_feedback_msg', true );
if(!empty($prev_feedback_msg))
foreach($prev_feedback_msg as $k=>$v){
?>
<li>
<?php echo $k.' - '.$v; ?>
</li>
<?php
}
?>
</ul>
<?php
}
//保存artwork_id参数
add_action( 'save_post', 'artwork_id_save_meta_box' );
function artwork_id_save_meta_box($post_id){
$msg = sanitize_text_field( $_POST['fallback_msg'] );
$last = get_post_meta( $post_id, '_prev_feedback_msg', true )?:array();
array_push($last, $msg);
if (!empty($msg)){
update_post_meta( $post_id, '_prev_feedback_msg', $last );
}
update_post_meta( $post_id, '_fallback_msg', '' );
$msg_args = array(
'send_user' => get_current_user_id(),
'receive_user' => get_post($post_id)->post_author,
'msg' => '您的文章《<a href="'.get_permalink( $post_id ).'">'. get_post($post_id)->post_title.'</a>》已退回,原因:'.$msg
);
if(!empty($msg)){
send_private_message($msg_args);
}
}
代码主要功能我就不赘述了。直接上功能预览。
在打回原因中写入文字后,只要保存文章就会发送给该文章的所有者。
当然,还有自动保存前几次的打回原因。是不是很人性化
这就是效果了。
结束语
这就是所有的步骤了,该功能还做的不完善。比如历史记录应该加上是哪个管理发送的打回,在什么时候打回的之类的功能。
来源:详情
依据 CC BY-SA 3.0 CN 国际许可协议 进行授权,转载请附上出处链接及本声明。
1. 资源都是经过站长或作者收集测试修改后发布分享。如若转载请在文内以超链形式注明狐狸库文章出处,谢谢合作!
2. 本站除原创内容,其余所有内容均收集自互联网,仅限用于学习和研究目的,本站不对其内容的合法性承担任何责任。如有版权内容,请通知我们或作者删除,其版权均归原作者所有,本站虽力求保存原有版权信息,但因众多资源经多次转载,已无法确定其真实来源,或已将原有信息丢失,所以敬请原作者谅解!
3. 本站用户所发布的一切资源内容不代表本站立场,并不代表本站赞同其观点和对其真实性负责,若您对本站所载资源作品版权归属存有异议,请留言附说明联系邮箱,我们将在第一时间予以处理 ,同时向您表示歉意!为尊重作者版权,请购买原版作品,支持您喜欢的作者,谢谢!
4. 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客如有发现请立即向站长举报;本站资源文件大多存储在云盘,如发现链接或图片失效,请联系作者或站长及时更新。
请登录后查看评论内容