1 | <?php |
---|
2 | |
---|
3 | add_filter( 'wp_post_lock_status', function ( $lock_status, $post_id, $time, $time_window, $user ) { |
---|
4 | |
---|
5 | if ( $lock_status === false ) { |
---|
6 | |
---|
7 | if ( get_post_meta( $post_id, '_edit_lock_hash', 1 ) !== wp360_get_unique_hash() ) { |
---|
8 | return $user; |
---|
9 | } |
---|
10 | } |
---|
11 | |
---|
12 | return $lock_status; |
---|
13 | }, 10, 5 ); |
---|
14 | |
---|
15 | |
---|
16 | function wp360_get_unique_hash() { |
---|
17 | |
---|
18 | if ( isset( $_COOKIE[ 'wordpress_logged_in_unique_' . COOKIEHASH ] ) ) { |
---|
19 | return $_COOKIE[ 'wordpress_logged_in_unique_' . COOKIEHASH ]; |
---|
20 | } |
---|
21 | |
---|
22 | return false; |
---|
23 | } |
---|
24 | |
---|
25 | add_action( 'set_logged_in_cookie', function ( $logged_in_cookie, $expire, $expiration, $user_id, $scheme ) { |
---|
26 | |
---|
27 | $secure = is_ssl(); |
---|
28 | $secure = apply_filters( 'secure_auth_cookie', $secure, $user_id ); |
---|
29 | |
---|
30 | $secure_logged_in_cookie = $secure && 'https' === parse_url( get_option( 'home' ), PHP_URL_SCHEME ); |
---|
31 | $secure_logged_in_cookie = apply_filters( 'secure_logged_in_cookie', $secure_logged_in_cookie, $user_id, $secure ); |
---|
32 | |
---|
33 | $hash = md5( isset( $_SERVER['HTTP_USER_AGENT'] ) ? $_SERVER['HTTP_USER_AGENT'] : '' . wp_generate_password() ); |
---|
34 | |
---|
35 | setcookie( 'wordpress_logged_in_unique_' . COOKIEHASH, $hash, $expire, COOKIEPATH, COOKIE_DOMAIN, |
---|
36 | $secure_logged_in_cookie, true ); |
---|
37 | }, 10, 5 ); |
---|
38 | |
---|
39 | add_action( 'updated_postmeta', function ( $meta_id, $object_id, $meta_key, $meta_value ) { |
---|
40 | |
---|
41 | if ( $meta_key === '_edit_lock' && $hash = wp360_get_unique_hash() ) { |
---|
42 | update_post_meta( $object_id, '_edit_lock_hash', $hash ); |
---|
43 | } |
---|
44 | }, 10, 4 ); |
---|