WordPress nội bộ @ đề cập


8

Tôi đang tìm cách liên kết đến các trang tác giả trong một lần cài đặt WordPress chỉ bằng cách đặt biểu tượng @ trước tên người dùng của một người trong bài đăng .... giống như trên twitter.

Thí dụ:

Nếu tên người dùng là "Bill256" và tôi viết "@ Bill256" thì nó sẽ được liên kết đến trang tác giả của anh ấy.

Câu trả lời:


13

Đây là một mẹo nhỏ vì sanitize_usercho phép khoảng trắng trong tên người dùng, có nghĩa là khó tránh khỏi việc lấy toàn bộ cụm từ '@johndoe nói rằng ...' trái ngược với tên người dùng thực tế '@johndoe' và cuối cùng bạn không có dấu phân cách Cứu giúp. Để tránh điều đó, tôi áp đặt một yêu cầu rằng các khoảng trắng trong tên người dùng phải được thay thế bằng '+'.

function look_for_author($login) {
  if (!empty($login[1])) {
    $lname = str_replace('+',' ',$login[1]);
    $user = get_user_by('login',$lname);
    if (!empty($user)) return ' <a href="'.get_author_posts_url($user->ID).'">'.$lname.'</a> ';
  }
  return ' '.$login[0].' ';
}

function hyperlink_authors( $content ){
  $content = preg_replace_callback(
    '/[\s>]+@([A-Za-z0-9_.\-*@\+]+)[^A-Za-z0-9_.\-*@\+]/',
    'look_for_author',
    $content
  );
  return $content;
}
add_filter( 'the_content', 'hyperlink_authors', 1 );

Tôi sẽ không mong đợi giải pháp này sẽ rất mạnh mẽ, không phải không có nhiều điều chỉnh của regex. Và tôi nghĩ rằng bạn sẽ tốt hơn với một shortcode , nhưng bạn sẽ đi.

Lưu ý: Tôi nhận thấy rằng trang web này có chức năng tương tự như đề cập. Khi viết bình luận, bạn có thể thông báo cho những người dùng khác bằng cách viết "@username" nhưng tên người dùng ở đây có thể có khoảng trắng như với WordPress. Vấn đề "khoảng trắng" ở đây đã được giải quyết bằng cách yêu cầu xóa khoảng trắng , thay vì thay thế bằng dấu "+". Đó có thể là một cách khác để giải quyết vấn đề tiếp cận.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.