-
WordPress给网站右键添加自定义的按钮美化
要给 WordPress 网站右键添加自定义按钮实现美化,可以按照以下步骤进行操作: 在 WordPress 后台添加功能代码:将以下代码添加到主题的 functions.php 文件中,这将在前端页面的 标签之间添加一段 JavaScript 代码。 function custom_right_click_menu() { ?> <script type="text/javascript"> (function($) { $(document).ready(function() { $('body').on('contextmenu', function() { var top = event.pageY + 'px'; var left = event.pageX + 'px'; $('<div>').attr({ id: 'my-custom-menu', }).css({ display: 'none', position: 'fixed', top: top, left: left, border: '1px solid #ccc', background: '#fff', padding: '8px', 'z-index': '9999' }).html('<ul><li><a href="#">自定义按钮1</a></li><li><a href="#">自定义按钮2</a></li></ul>').appendTo('body').fadeIn(200); return false; }); $('body').click(function() { $('#my-custom-menu').fadeOut(200, function() { $(this).remove(); }); }); }); })(jQuery); </script> <?php } add_action('wp_head', 'custom_right_click_menu'); 修改自定义按钮:将上述代码中的自定义按钮名称和链接修改为你需要的名称和链接。你可以根据需求添加更多的按钮。设计菜单样式:根据需求,将自定义按钮菜单样式进行修改。保存并应用:最后,在 WordPress 后台将修改后的主题文件保存并应用即可。通过以上步骤,就可以为 WordPress 网站添加自定义按钮实现美化。... -
如何防止别人镜像WordPress站点,同时也要阻止Nginx反向代理自己的网站
确保你和你的网站管理员采取以下预防措施: 配置 HTTPS:使用 HTTPS 可以帮助防止别人在传输过程中拦截你的数据。同时也建议启用 HSTS。设置正确的权限:确保你的网站目录不允许其他用户访问,并限制文件的权限。安装防火墙或安全插件:使用防火墙或安全插件可以防止恶意的 IP 地址或请求,并自动屏蔽或拦截它们。禁用目录浏览:确保在你的服务器或 WordPress 设置中禁用目录浏览功能。常规更新:确保 WordPress 及其插件 / 主题及时更新,以避免利用已知漏洞进行攻击。检查日志:定期检查日志以查找可疑的访问和行为。如果你决定禁用 Nginx 反向代理的话,可以在 Nginx 配置中添加以下代码: location / { proxy_pass http://your_wordpress_site_url; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } 在你的 WordPress 配置中,添加以下代码: if ( $_SERVER['HTTP_X_REAL_IP'] == 'the_Nginx_server_IP' ) { exit; } 这段代码将检查 HTTP 头中的 X-Real-IP 值是否等于 Nginx 服务器的 IP 地址,如果是则退出程序,从而防止 Nginx 反向代理。... -
7b2主题后台发帖下载设置默认开启下载功能和游客购买
使用 7b2 主题的用户每次发帖都会手动开启下载和游客购买功能,现在教大家默认开启。找到主题 b2/Modules/Settings/post.php 大概 583 行前后,如有改动的根据图片找: 修改后后台演示:... -
使用 Bootstrap 4 样式库和单独的 CSS 文件来创建菜单栏
有些 typecho 没有菜单栏,这是一个简易的菜单栏目教程:以下 html 代码,找个位置插入,然后写个 CSS 就完事了。 <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> <a class="navbar-brand" href="//cansnow.cn">首页</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav"> <li class="nav-item active"> <a class="nav-link" href="/ai.html">AI画廊</a> </li> <li class="nav-item"> <a class="nav-link" href="/category/natural-scenery/">风光相册</a> </li> <li class="nav-item"> <a class="nav-link" href="#">关于我</a> </li> </ul> </div> </nav> CSS: /* 在这里编写您自己的 CSS 样式 */ .navbar-brand { font-size: 1.5rem; font-weight: bold; margin: 0 2rem; } .navbar-nav .nav-link { font-size: 1.2rem; margin-right: 1rem; } .navbar-nav .nav-item.active .nav-link { color: #fff; /* 高亮显示导航栏项 */ } .navbar-toggler { border: none; } .navbar-toggler-icon { background-color: #fff; /* 菜单 */ } CSS2: /* 在这里编写您自己的 CSS 样式 */ .navbar-nav .nav-item .nav-link.active { color: #fff; background-color: #d89910; /* 设置活动菜单项的背景色和文本颜色 */ justify-content: center; margin: 0; padding: 0; list-style: none; text-align: center; /* 文字居中 */ } 我们将代码分为两部分:导航栏 HTML 代码和单独的 CSS 文件。导航栏 HTML 代码是与之前相同的。在单独的 CSS 文件中,可编写您自己的样式。请注意,如果您使用一个单独的 CSS 文件而没有使用样式库,需要确保将 Bootstrap 的 CSS 和 JS 文件正确引用到您的 HTML 页面中。在 HTML 页面 head 标签中加入以下代码即可引用 Bootstrap 文件和独立的 CSS 文件: 在这个例子中,我们引用了 Bootstrap 的 CSS 和 JS 文件,还引用了名为 mystyle.css 的自定义样式文件。请注意,Bootstrap 的 JS 文件需要在页面底部加载,以确保所有的 DOM 元素加载完毕时才会启动。这样,在单独的 CSS 文件中,就可以编写更具体化的样式,以实现您的自定义效果。网址自己修改一下吧。 2023 年 6 月份更新 页面滚动后,导航栏无法固定,这样滚动了 N 久再切换分类的时候很麻烦。使导航条固定在页面的顶部,并随着浏览器滚动而变动,在导航条的外层包裹一个固定位置的容器。以下是修改后的代码: <div class="fixed-top"> <nav class="navbar navbar-expand-lg navbar-dark bg-dark"> <a class="navbar-brand" href="//www.cansnow.cn">首页</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false"…... -
网址安全监测的免费API
VirusTotal API: 这是一个提供免费的网址检测 API。您需要首先注册一个账号,获取 API 密钥,然后集成到您的 PHP 代码中。它可以检测网址是否存在任何恶意软件或病毒。示例代码: $url = 'https://www.example.com'; $apikey = 'your_api_key'; $response = file_get_contents("https://www.virustotal.com/vtapi/v2/url/report?apikey=$apikey&resource=$url"); $json_response = json_decode($response, true); if($json_response['response_code'] == 1 && $json_response['positives'] > 0){ echo "The website is not safe"; }else{ echo "The website is safe"; } Google Safe Browsing API: 这是由 Google 提供的另一个免费的安全检测 API。您可以使用它来检测网址是否受到谷歌认为的威胁。示例代码: $url = 'https://www.example.com'; $apikey = 'your_api_key'; $response = file_get_contents("https://safebrowsing.googleapis.com/v4/threatMatches:find?key=$apikey"); $params = array( 'client' => array( 'clientId' => 'your_company_name', 'clientVersion' => '1.0.0' ), 'threatInfo' => array( 'threatTypes' => array('MALWARE','SOCIAL_ENGINEERING','UNWANTED_SOFTWARE','POTENTIALLY_HARMFUL_APPLICATION'), 'platformTypes' => array('WINDOWS','LINUX','ANDROID'), 'threatEntryTypes' => array('URL'), 'threatEntries' => array( array('url' => $url) ) ) ); $options = array( 'http' => array( 'header' => "Content-Type: application/json", 'method' => 'POST', 'content' => json_encode($params) ) ); $context = stream_context_create($options); $result = file_get_contents("https://safebrowsing.googleapis.com/v4/threatMatches:find?key=$apikey", false, $context); $json_result = json_decode($result, true); if(!empty($json_result['matches'])){ echo "The website is not safe"; }else{ echo "The website is safe"; } 请注意,使用这些 API 需要注册并获取 API 密钥。此外,请注意 API 限制和条款,以确保您不会滥用或违反任何规则。... -
通过原型工具直接生成APP的案例,后端采用的WordPress
原型工具可以将原型转换为移动应用程序。其中之一是 Proto.io。Proto.io 可以将您的原型直接转换为 iOS 和 Android 应用程序。这是使用 WordPress 作为后端的一个示例: 步骤 1: 创建原型 使用 Proto.io 创建您的移动应用程序原型。 Proto.io 是一个在线移动原型工具,可以让您设计和交互您的应用程序原型,而无需编写代码。 步骤 2:连接 WordPress 到 Proto.io Proto.io 可以与 WordPress 集成。在 WordPress 中,您需要安装并启用 WP REST API 插件。这将启用 WordPress 的 REST API,并允许 Proto.io 访问您的 WordPress 帖子和页面。 步骤 3:创建 API 密钥 在 WordPress 中,您需要创建一个 API 密钥,以便 Proto.io 可以通过 REST API 访问您的 WordPress 网站。导航到您的 WordPress 仪表板 > 用户 > 个人资料。从个人资料页面中,单击生成新的 API 密钥按钮。复制并保存 API 密钥。 步骤 4:将 WordPress 数据添加到 Proto.io 使用 Proto.io,您可以添加 WordPress 页面和帖子到您的移动应用程序原型中。通过 Proto.io 插件,您可以轻松地将 WordPress 数据添加到您的手机应用程序原型中,并且将 WordPress 仪表板和新闻页面添加到应用程序底部栏中,以便您的用户可以浏览您的网站。 步骤 5:导出应用程序 完成应用程序原型后,您可以将其导出为 iOS 或 Android 应用程序。Proto.io 将利用您创建的原型,将其转换为应用程序原型,并添加所需的移动应用程序功能和功能。 这就是一个通过原型工具直接生成 APP 的案例,后端采用的 WordPress。... -
如何保护WordPress的wp-cron.php
直接屏蔽外部访问,仅允许服务器自身访问 (因为 Wordpress 执行任务的时候,就是在服务器上请求的)。在你的域名 conf 下,添加下面语句: #禁止外网访问wp-cron location ~ ^/wp-cron\.php { allow 127.0.0.1;#本地IP allow 127.255.255.255;#服务器IP deny all; location ~ .*\.php?$ { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; } } 这样就 ok 了。现在的 Wordpress 的安装文件(/wp-admin/install.php)建议安装后,禁止访问吧。只要: #禁止读取install location ~ ^/wp-admin/install\.php { deny all; log_not_found off; access_log off; } 为什么不直接删除呢,因为每次 Wordpress 更新后,都有。至于为什么屏蔽,原因就是,访问它,它会读取内部 cache(一般在 MySQL,如果你没转移的话),如果不存在,读取 MySQL 数据库,确认安装,返回安装完毕,设置 cache(同样,如果没有外部 Cache,那么就在 MySQL 里面)。... -
WordPress插件 用于用户登陆后不显示部分广告
首先在 WordPress 插件目录下创建一个新目录,并在其中创建一个名为 "hide-ads-on-login" 的新文件夹。在此文件夹中创建一个新 PHP 文件,命名为 "hide-ads-on-login.php" ,并将以下代码添加到该文件中: <?php /* Plugin Name: Hide Ads on Login Description: Hides ads for logged in users Version: 1.0 Author: Your Name Here License: GPL2 */ // Set cookie on login function hide_ads_set_cookie() { if ( is_user_logged_in() ) { setcookie( 'hide_ads', 'true' ); } } add_action( 'wp_login', 'hide_ads_set_cookie' ); // Check cookie and hide ads function hide_ads_hide_content() { if ( isset( $_COOKIE['hide_ads'] ) && $_COOKIE['hide_ads'] == 'true' ) { echo '<style type="text/css">#ad-section { display:none; }</style>'; } } add_action( 'wp_head', 'hide_ads_hide_content' ); 此插件将在用户登录时设置一个名为 "hide_ads" 的 cookie。插件还使用了一个名为 "hide_ads_hide_content" 的函数,该函数检查 cookie,并在页面顶部添加 CSS 样式,以将 ID 为 "ad-section" 的广告部分隐藏。现在将 "hide-ads-on-login" 文件夹上传到 WordPress 插件目录中的 "wp-content/plugins" 目录。在 WordPress 后端页面中,启用 "Hide Ads on Login" 插件。现在,在用户登录后,将显示页面上 ID 为 “ad-section” 的广告部分。如果它存在,将在检查 cookie 时隐藏它。如果您希望在其他部分隐藏广告,只需将 CSS 样式中的 "ad-section" ID 更改为要隐藏的部分的 ID 即可。 另外一个方法是: 让注册用户登陆 WordPress 后不显示广告 在 WordPress 插入广告代码的时候加上判断。通过 get_current_user_id () 返回当前的用户,如果没有登陆用户,那么就是 0. $ad_code = '广告代码放这里..'; if (get_current_user_id()) { $ad_code = ''; } echo $ad_code; 或者是: <php if (!get_current_user_id()) { ?> // 广告代码HTML <php } ?> 这样,只要平时登陆 WordPress, 页面就不会显示广告。一般来说是不会和缓存插件冲突的,因为一般缓存只有在不是 WordPress 用户登陆的时候才会生成缓存。当然,如果你只想你登陆的时候不显示广告 (比如有多个 wordpress 用户), 那么只要知道你用户的 user id 就可以。假设是 1 的话: $ad_code = 'Ads code put here.'; if (get_current_user_id() == 1) { $ad_code = ''; } echo $ad_code; 或者,也许长这样: <php if (get_current_user_id() != 1) { ?>…... -
考虑到反代缓存图片,图片的空间占用太大的问题
可以考虑使用 Linux 自带的图像处理工具 ImageMagick以下是基于 ImageMagick 的示例代码: #!/bin/bash # 指定缓存路径和压缩比例 cache_path="/path/to/cache" quality=80 # 循环处理缓存目录下的所有图片文件 for file in $cache_path/*.jpg; do # 使用 ImageMagick 进行压缩,将压缩后的文件覆盖原始文件 convert "$file" -quality $quality "$file" done 在这个脚本中,我们指定了缓存路径和压缩比例,并使用 ImageMagick 的 convert 命令压缩缓存目录下的所有 JPG 格式图片。通过调整 quality 参数的值可以控制压缩比例,从而达到不同的压缩效果和文件大小。使用脚本批量压缩图片可能会对服务器性能产生一定的影响,特别是当缓存的图片数量较大时。因此,建议在服务器空闲时运行该脚本,以避免影响其他正在运行的服务。 可以将上面的脚本嵌入到 Nginx 的配置文件中,使用 Nginx 的 nginx.conf 文件中的 init_by_lua_block 指令执行 Lua 脚本来调用该脚本。示例代码: http { # 定义变量 set $cache_path "/path/to/cache"; set $quality "80"; # 使用 init_by_lua_block 调用脚本 init_by_lua_block { -- 定义脚本 local cmd = "/bin/bash -c '/path/to/script.sh " .. ngx.var.cache_path .. " " .. ngx.var.quality .. "'"; os.execute(cmd); } # 添加反向代理配置,缓存并压缩图片 server { listen 80; server_name example.com; location / { add_header Cache-Control "public"; proxy_pass http://backend_server$request_uri; proxy_set_header Host $http_host; proxy_cache my_cache; # 使用 image_filter 压缩图片 image_filter resize 800 -1; image_filter_jpeg_quality $quality; } # 设置缓存路径 location /cache/ { internal; alias $cache_path/; } } } 在这个配置中,我们首先定义了 $cache_path 和 $quality 两个变量,并在 init_by_lua_block 中执行调用 /path/to/script.sh 脚本,其中 $cache_path 和 $quality 作为参数传递给脚本。脚本的执行结果是对缓存目录下的 JPG 图片进行压缩。 接下来,我们添加了反向代理配置,使用 image_filter 来压缩图片。image_filter 是 Nginx 内置的图像处理模块,可以用于实时处理图像文件。在这个配置中,我们在缓存中引用图片时,将图片请求转发到名为 /cache/ 的内部位置上,并使用 image_filter 对图片进行实时压缩。... -
一个域名反代多个域名,反代并缓存图片
在这个配置中,我们在 Server 块中定义了多个域名(image1.example.com 和 image2.example.com)反向代理到同一个服务器 backend_server 上。我们使用了 proxy_pass 指令将请求转发到后端服务器,并使用了 proxy_set_header 给请求附加了 Host 字段以便后端服务器识别请求来自于哪个域名。并且在 Location 块中定义了缓存配置,同时使用 if 条件语句根据当前域名设定不同的缓存路径和缓存键值,保证不同域名缓存的图片在不同的文件夹里。注意缓存路径必须在 proxy_cache_path 前面已经声明过,否则会报错。 http { # 定义缓存路径和缓存的有效期 proxy_cache_path /path/to/cache levels=1:2 keys_zone=my_cache:100m inactive=60m; proxy_cache_key "$scheme$request_method$host$request_uri"; proxy_cache_valid 200 60m; # 定义多个域名反向代理到同一个服务器 server { listen 80; server_name image1.example.com image2.example.com; # 反代到同一个服务器上,根据 Host 字段转发请求 location / { add_header Cache-Control "public"; proxy_pass http://backend_server$request_uri; proxy_set_header Host $http_host; } # 根据不同域名设置不同的缓存路径和缓存键值 if ($http_host = "image1.example.com") { proxy_cache_path /path/to/cache1 levels=1:2 keys_zone=my_cache1:100m inactive=60m; proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args"; } if ($http_host = "image2.example.com") { proxy_cache_path /path/to/cache2 levels=1:2 keys_zone=my_cache2:100m inactive=60m; proxy_cache_key "$scheme$request_method$host$request_uri$is_args$args"; } } }...





