wordpress指定文章内容需要登录才能查看的插件代码,附带了经典编辑器的快捷方式。
以前都是直接改的文章页面或者主题的functions.php文件,今天为了更方便就直接让ai写的一大半代码,再加上自己修改了下。
手动加入就是:[login-restricted] 需要登录才能看见的内容 [/login-restricted] ,只会隐藏这里面的内容,其他不影响。
主要的Custom Login Restriction.php文件代码:
<?php
/*
Plugin Name: Custom Login Restriction
Description: 需要登录才能查看内容.
Version: 1.0
Author: summer
*/
// 当用户尝试访问受限制的内容时触发
function custom_restrict_content($content) {
// 检查是否在文章页面
if (is_single() && !is_user_logged_in()) {
// 使用正则表达式替换 [login-restricted] 和 [/login-restricted] 之间的内容
$content = preg_replace('/\[login-restricted\](.*?)\[\/login-restricted\]/s', wp_kses_post('<p>请登录后查看内容。</p>'), $content);
}
return $content;
}
add_filter('the_content', 'custom_restrict_content');
// 处理登录后仅隐藏短代码标记
function custom_hide_shortcode($atts, $content = null) {
if (!is_user_logged_in()) {
return wp_kses_post('<p>请登录后查看内容。</p>');
}
return do_shortcode($content);
}
add_shortcode('login-restricted', 'custom_hide_shortcode');
// 添加按钮到编辑器
function custom_add_editor_button() {
if (current_user_can('edit_posts')) {
add_filter('mce_external_plugins', 'custom_add_plugin');
add_filter('mce_buttons', 'custom_register_button');
}
}
add_action('admin_head', 'custom_add_editor_button');
// 注册插件脚本
function custom_add_plugin($plugin_array) {
$plugin_array['custom_button'] = plugins_url('/custom-login-restriction/logineditorbutton.js');
return $plugin_array;
}
// 在编辑器中注册按钮
function custom_register_button($buttons) {
array_push($buttons, 'custom_button');
return $buttons;
}
?>
logineditorbutton.js的代码:
(function() {
tinymce.PluginManager.add('custom_button', function(editor, url) {
editor.addButton('custom_button', {
text: '限制登录查看',
icon: false,
onclick: function() {
editor.execCommand('mceInsertContent', false, '[login-restricted]在这里放入受限制的内容[/login-restricted]');
}
});
});
})();
