步骤1-注册自定义查询变量通过添加自定义查询变量,您可以让WP知道它,以便在请求中使用它。
function wpse_add_query_vars( $vars ) {
$vars[] = \'wpse_set_to_publish\';
return $vars;
}
add_filter( \'query_vars\', \'wpse_add_query_vars\' );
步骤2-嗅探请求现在我们连接到
parse_request
查找新的自定义查询变量。这是您处理它的地方,它可以变得复杂或简单。例如,为了安全起见,您可以检查是否存在存储为postmeta或transient的令牌。但在最基本的层面上:
function wpse_sniff_request( $query ) {
if ( ! is_admin() && isset( $query->query_vars[\'wpse_set_to_publish\'] ) ) {
$post_vars = array(
\'ID\' => $query->query_vars[\'wpse_set_to_publish\'],
\'post_status\' => \'publish\'
);
wp_update_post( $post_vars );
}
}
add_action( \'parse_request\', \'wpse_sniff_request\' );
注意:您也可以跳过第一步,在
init
钩住而不是截住
$_GET[\'wpse_set_to_publish\']
但这并不完全是“Wordpress方式”
第3步-在电子邮件中提供批准链接最后,假设您正在生成发出的电子邮件,您可以包含以下内容的链接:
echo add_query_arg( array( \'wpse_set_to_publish\' => $post_id ), site_url() );
<注意:您可能会得到
$post_id
从返回值
wp_insert_post()
.
然后,一旦用户点击该链接,它应该会将他们带到http://yourwebsite.com/?wpse_set_to_publish=123
这将用ID更新帖子123
具有发布状态。
不幸的是,我现在没有时间对其进行全面测试,但这应该会让您朝着正确的方向前进。同样,这是最基本的实现,您应该始终考虑安全性、权限等。虽然这可能更方便,但从理论上讲,如果您只提供get_edit_post_link()
这将迫使用户登录(如果他们还没有登录),然后他们可以从管理员处向右移动以发布。