WordPress所见即所得发布方法总结

根据错误提示,问题出在 <textarea> 元素上。具体原因是:

  1. <textarea> 被隐藏

    • TinyMCE 初始化后,会将原始的 <textarea> 隐藏(设置为 display: nonevisibility: hidden)。
    • 由于 <textarea> 被隐藏,浏览器无法对其进行验证(即使设置了 required 属性)。
  2. required 属性冲突

    • 你为 <textarea> 设置了 required 属性,但隐藏的表单控件无法通过浏览器的默认验证。

解决方法

方法 1:移除 required 属性

如果 TinyMCE 编辑器已经确保内容不为空,可以移除 <textarea>required 属性。

<textarea name="content" id="content" placeholder="在此输入内容..."></textarea>

方法 2:手动验证内容

在表单提交时,手动检查 TinyMCE 的内容是否为空。

document.querySelector('form').onsubmit = function() {
    var content = tinymce.get('content').getContent(); // 获取 TinyMCE 内容
    if (!content.trim()) {
        alert('内容不能为空!');
        return false; // 阻止表单提交
    }
    document.querySelector('textarea[name="content"]').value = content; // 同步到 textarea
};

方法 3:隐藏 <textarea> 但不影响验证

<textarea> 设置为透明且不可见,但仍然占据空间,以便通过浏览器验证。

<textarea name="content" id="content" placeholder="在此输入内容..." required
          style="opacity: 0; height: 0; width: 0; position: absolute;"></textarea>

方法 4:禁用浏览器默认验证

在表单中添加 novalidate 属性,禁用浏览器的默认验证,完全依赖 JavaScript 验证。

<form method="POST" action="" novalidate>

修复后的完整代码

以下是结合 方法 2方法 4 的修复代码:

<?php
// 加载 WordPress 环境
require_once('../wp-load.php');

// 检查是否提交了表单
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['content']) && isset($_POST['title'])) {
    // 检查 nonce 和用户权限
    if (!isset($_POST['markdown_publish_nonce']) || !wp_verify_nonce($_POST['markdown_publish_nonce'], 'markdown_publish_action')) {
        echo '<div class="error">安全验证失败,请重试。</div>';
    } elseif (!current_user_can('publish_posts')) {
        echo '<div class="error">你没有权限发布文章。</div>';
    } else {
        // 获取表单数据
        $title = sanitize_text_field($_POST['title']);
        $content = $_POST['content']; // TinyMCE 输出的 HTML 内容
        $category = isset($_POST['category']) ? intval($_POST['category']) : 0; // 分类 ID
        $tags = isset($_POST['tags']) ? sanitize_text_field($_POST['tags']) : ''; // 标签

        // 发布文章
        $post_id = wp_insert_post([
            'post_title'   => $title,
            'post_content' => $content,
            'post_status'  => 'publish', // 直接发布
            'post_author'  => get_current_user_id(), // 当前用户为作者
            'post_category' => [$category], // 分配分类
        ]);

        if ($post_id) {
            // 分配标签
            if (!empty($tags)) {
                wp_set_post_tags($post_id, $tags);
            }

            echo '<div class="success">文章发布成功!<a href="' . get_permalink($post_id) . '">查看文章</a></div>';
        } else {
            echo '<div class="error">文章发布失败,请重试。</div>';
        }
    }
}

// 获取所有分类
$categories = get_categories(['hide_empty' => false]);
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>所见即所得发布工具</title>
    <!-- 引入 TinyMCE -->
    <script src="https://cdn.tiny.cloud/1/你的API Key/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script>
    <script>
        tinymce.init({
            selector: '#content', // 绑定到 textarea
            height: 500, // 编辑器高度
            menubar: false, // 隐藏菜单栏
            plugins: [
                'advlist autolink lists link image charmap print preview anchor',
                'searchreplace visualblocks code fullscreen',
                'insertdatetime media table paste code help wordcount'
            ],
            toolbar: 'undo redo | formatselect | bold italic backcolor | \
                       alignleft aligncenter alignright alignjustify | \
                       bullist numlist outdent indent | removeformat | help',
            init_instance_callback: function(editor) {
                console.log('TinyMCE 初始化完成'); // 检查初始化是否成功
            }
        });

        // 表单提交时同步 TinyMCE 内容
        document.querySelector('form').onsubmit = function() {
            var content = tinymce.get('content').getContent(); // 获取 TinyMCE 内容
            if (!content.trim()) {
                alert('内容不能为空!');
                return false; // 阻止表单提交
            }
            document.querySelector('textarea[name="content"]').value = content; // 同步到 textarea
        };
    </script>
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 20px;
        }
        .publish-tool {
            max-width: 800px;
            margin: 20px auto;
            padding: 20px;
            border: 1px solid #ccc;
            background-color: #f9f9f9;
        }
        .publish-tool textarea {
            width: 100%;
            height: 200px;
            padding: 10px;
            font-size: 16px;
        }
        .publish-tool .buttons {
            margin-top: 10px;
        }
        .publish-tool .buttons button {
            padding: 10px 20px;
            font-size: 16px;
            margin-right: 10px;
            cursor: pointer;
        }
        .success {
            color: green;
            margin: 10px 0;
        }
        .error {
            color: red;
            margin: 10px 0;
        }
    </style>
    <script>
        // 重置表单
        function resetForm() {
            tinymce.get('content').setContent(''); // 清空 TinyMCE 内容
            document.querySelector('input[name="title"]').value = '';
            document.querySelector('select[name="category"]').selectedIndex = 0;
            document.querySelector('input[name="tags"]').value = '';
        }
    </script>
</head>
<body>
    <div class="publish-tool">
        <h1>所见即所得发布工具</h1>
        <form method="POST" action="" novalidate>
            <?php wp_nonce_field('markdown_publish_action', 'markdown_publish_nonce'); ?>
            <div>
                <label for="title">标题:</label>
                <input type="text" name="title" id="title" required>
            </div>
            <div>
                <label for="content">内容:</label>
                <textarea name="content" id="content" placeholder="在此输入内容..."></textarea>
            </div>
            <div>
                <label for="category">分类:</label>
                <select name="category" id="category">
                    <?php foreach ($categories as $cat): ?>
                        <option value="<?php echo $cat->term_id; ?>"><?php echo $cat->name; ?></option>
                    <?php endforeach; ?>
                </select>
            </div>
            <div>
                <label for="tags">标签(用逗号分隔):</label>
                <input type="text" name="tags" id="tags">
            </div>
            <div class="buttons">
                <button type="submit" name="publish">发布</button>
                <button type="button" onclick="resetForm()">重置</button>
            </div>
        </form>
    </div>
</body>
</html>

测试步骤

  1. 打开页面,确保 TinyMCE 编辑器正常加载。
  2. 输入标题和内容,选择分类和标签。
  3. 点击“发布”按钮,检查是否有成功或失败的提示信息。
  4. 如果内容为空,会弹出提示“内容不能为空!”并阻止表单提交。

如果还有其他问题,欢迎继续提问!

Posted in 网络相关 | Leave a comment

自动下载文章中的所有远程图片,并将它们保存到本地

错误信息表明 wp_generate_attachment_metadata 函数未定义。这是因为在 WordPress 中,wp_generate_attachment_metadata 函数位于 wp-admin/includes/image.php 文件中,而这个文件默认不会在插件或主题中自动加载。


解决方法

在调用 wp_generate_attachment_metadata 之前,需要手动引入 wp-admin/includes/image.php 文件。以下是修复后的代码:

php
复制
<?php
/*
Plugin Name: MY Auto Save Remote Image
Plugin URI: http://www.devsaab.com/wordpress/
Description: This plugin automatically downloads all remote images from a post and saves them locally.
Version: 1.4
Author: Prebhdev Singh
Disclaimer: No warranty or guarantee of any kind! Use this at your own risk.
*/

add_action('publish_post', 'fetch_images');

function fetch_images($post_ID) {
    // 检查是否正在自动保存
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return;
    }

    // 检查用户权限
    if (!current_user_can('edit_post', $post_ID)) {
        return;
    }

    // 引入 WordPress 图像处理函数
    require_once(ABSPATH . 'wp-admin/includes/image.php');

    // 获取文章内容
    $post = get_post($post_ID);
    $updated = $post->post_content;

    // 提取所有图片 URL
    if (preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches)) {
        $first_images = $matches[1];

        foreach ($first_images as $first_image) {
            // 检查图片域名是否与当前站点一致
            if (strpos($first_image, $_SERVER['HTTP_HOST']) === false) {
                // 处理 HTTPS
                $first_image = str_replace('http://', 'https://', $first_image);

                // 下载图片
                $get = wp_remote_get($first_image);
                if (!is_wp_error($get)) {
                    $type = wp_remote_retrieve_header($get, 'content-type');
                    if (strpos($type, 'image') === false) {
                        continue; // 如果不是图片,跳过
                    }

                    // 生成唯一文件名
                    $filename = wp_unique_filename(wp_upload_dir()['path'], rawurldecode(basename($first_image)));

                    // 保存图片
                    $mirror = wp_upload_bits($filename, '', wp_remote_retrieve_body($get));

                    if (!$mirror['error']) {
                        // 创建附件
                        $attachment = array(
                            'post_title' => preg_replace('/\.[^.]+$/', '', basename($filename)),
                            'post_mime_type' => $type
                        );
                        $attach_id = wp_insert_attachment($attachment, $mirror['file'], $post_ID);

                        if (!is_wp_error($attach_id)) {
                            // 生成附件元数据并更新
                            $attach_data = wp_generate_attachment_metadata($attach_id, $mirror['file']);
                            wp_update_attachment_metadata($attach_id, $attach_data);

                            // 替换文章中的图片 URL
                            $updated = str_replace($first_image, $mirror['url'], $updated);
                        }
                    } else {
                        error_log('Failed to save image: ' . $first_image);
                    }
                } else {
                    error_log('Failed to download image: ' . $first_image);
                }
            }
        }

        // 更新文章内容
        if ($updated !== $post->post_content) {
            wp_update_post(array('ID' => $post_ID, 'post_content' => $updated));
        }
    }
}
?>

关键修复点

  1. 引入 wp-admin/includes/image.php

    • 在函数开头添加以下代码:

      php
      复制
      require_once(ABSPATH . 'wp-admin/includes/image.php');
    • 这确保了 wp_generate_attachment_metadata 函数可用。

  2. 确保文件路径正确

    • ABSPATH 是 WordPress 根目录的绝对路径,确保路径拼接正确。


测试步骤

  1. 将修复后的代码保存为 my-auto-save-remote-image.php

  2. 上传到 WordPress 的 wp-content/plugins/ 目录。

  3. 在 WordPress 后台激活插件。

  4. 发布一篇包含远程图片的文章,检查插件是否正常工作。


注意事项

  1. 权限问题

    • 确保 WordPress 的上传目录(wp-content/uploads)有正确的写权限。

  2. HTTPS 支持

    • 如果远程图片使用 HTTPS,确保服务器支持 HTTPS 请求。

  3. 性能监控

    • 如果文章中有大量图片,可能会影响发布速度,建议监控服务器性能。

Posted in 网络相关 | Leave a comment

wordpress 发布markdown内容及格式问题解决方案

你提到的问题是:Markdown 转换后的文章在 WordPress 中格式不正确,尤其是代码部分无法完美显示。这是因为 WordPress 默认使用纯文本格式保存文章内容,而 Markdown 中的代码块、标题、列表等格式需要特定的处理才能正确显示。

以下是解决这个问题的几种方法:


1. 保留 Markdown 格式

如果你希望文章在 WordPress 中仍然保留 Markdown 格式(如代码块、标题、列表等),可以将 Markdown 转换为 HTML,并将 HTML 内容直接保存到 WordPress 文章中。

修改代码

在发布文章时,不要将 Markdown 转换为纯文本,而是直接保存为 HTML:

// 使用 Parsedown 解析 Markdown
$parsedown = new Parsedown();
$content = $parsedown->text($markdown); // 直接保存为 HTML

// 发布文章
$post_id = wp_insert_post([
    'post_title'   => $title,
    'post_content' => $content, // 保存 HTML 内容
    'post_status'  => 'publish',
    'post_author'  => get_current_user_id(),
    'post_category' => [$category],
]);

优点

  • 代码块、标题、列表等格式可以正确显示。
  • 不需要额外的插件或主题支持。

缺点

  • 文章内容以 HTML 格式保存,可能会影响某些 WordPress 主题的样式。

2. 使用 Markdown 插件

WordPress 本身不支持 Markdown,但可以通过插件来实现 Markdown 解析和显示。以下是推荐的两款插件:

插件 1:WP Githuber MD

  • 这是一个功能强大的 Markdown 插件,支持实时预览、代码高亮等功能。
  • 安装方法:
    1. 在 WordPress 后台,进入“插件” -> “安装插件”。
    2. 搜索“WP Githuber MD”,安装并激活。
    3. 在文章编辑器中,切换到 Markdown 模式。

插件 2:Jetpack

  • Jetpack 是 WordPress 官方推出的多功能插件,其中包含 Markdown 支持。
  • 安装方法:
    1. 在 WordPress 后台,进入“插件” -> “安装插件”。
    2. 搜索“Jetpack”,安装并激活。
    3. 启用 Markdown 模块:进入 Jetpack 设置,找到“Markdown”模块并启用。

修改代码

如果你使用 Markdown 插件,可以直接将 Markdown 内容保存到文章中,插件会自动解析并显示:

// 直接保存 Markdown 内容
$content = $markdown;

// 发布文章
$post_id = wp_insert_post([
    'post_title'   => $title,
    'post_content' => $content, // 保存 Markdown 内容
    'post_status'  => 'publish',
    'post_author'  => get_current_user_id(),
    'post_category' => [$category],
]);

优点

  • 插件会自动处理 Markdown 解析和显示。
  • 支持代码高亮、表格等高级功能。

缺点

  • 需要安装额外的插件。

3. 使用代码高亮插件

如果文章中的代码部分无法正确显示,可以安装代码高亮插件,例如:

插件:SyntaxHighlighter Evolved

  • 这是一个流行的代码高亮插件,支持多种编程语言。
  • 安装方法:
    1. 在 WordPress 后台,进入“插件” -> “安装插件”。
    2. 搜索“SyntaxHighlighter Evolved”,安装并激活。
    3. 在文章中使用 [code] 短代码包裹代码块。

修改代码

在发布文章时,将代码块用 [code] 短代码包裹:

// 使用 Parsedown 解析 Markdown
$parsedown = new Parsedown();
$html = $parsedown->text($markdown);

// 将代码块用 [code] 短代码包裹
$content = preg_replace('/<pre><code>(.*?)</code></pre>/s', '[code]$1[/code]', $html);

// 发布文章
$post_id = wp_insert_post([
    'post_title'   => $title,
    'post_content' => $content, // 保存包含短代码的内容
    'post_status'  => 'publish',
    'post_author'  => get_current_user_id(),
    'post_category' => [$category],
]);

优点

  • 代码部分可以高亮显示。
  • 支持多种编程语言。

缺点

  • 需要安装额外的插件。

4. 自定义 CSS 样式

如果你希望手动控制文章的样式,可以在 WordPress 主题中添加自定义 CSS。

修改主题的 style.css

  1. 打开当前主题的 style.css 文件(位于 wp-content/themes/your-theme/style.css)。
  2. 添加以下样式:
/* 代码块样式 */
pre {
    background-color: #f4f4f4;
    padding: 10px;
    border-radius: 5px;
    overflow-x: auto;
}

code {
    font-family: Consolas, Monaco, monospace;
    font-size: 14px;
    color: #d63384;
}

/* 标题样式 */
h1, h2, h3, h4, h5, h6 {
    margin-top: 1.5em;
    margin-bottom: 0.5em;
    font-weight: bold;
}

h1 { font-size: 2em; }
h2 { font-size: 1.75em; }
h3 { font-size: 1.5em; }
h4 { font-size: 1.25em; }
h5 { font-size: 1em; }
h6 { font-size: 0.875em; }

/* 列表样式 */
ul, ol {
    margin-left: 20px;
    margin-bottom: 1em;
}

li {
    margin-bottom: 0.5em;
}

优点

  • 完全自定义文章样式。
  • 不需要安装插件。

缺点

  • 需要手动编写和维护 CSS。

总结

根据你的需求,可以选择以下方案:

  1. 保留 Markdown 格式:将 Markdown 转换为 HTML 并保存。
  2. 使用 Markdown 插件:安装 WP Githuber MD 或 Jetpack,直接保存 Markdown 内容。
  3. 使用代码高亮插件:安装 SyntaxHighlighter Evolved,将代码块用短代码包裹。
  4. 自定义 CSS 样式:在主题中添加自定义 CSS,手动控制文章样式。

推荐使用 Markdown 插件(如 WP Githuber MD),因为它可以自动处理 Markdown 解析和代码高亮,同时保持文章的格式正确。

Posted in 网络相关 | Tagged | Leave a comment

5岁孩子睡前吃手指改善方法

孩子5岁仍保留睡前吃手指的习惯,这是常见的自我安抚行为,但长期可能影响牙齿和手指健康。以下分步骤提供温和的改善方案,家长可根据孩子性格灵活调整:
第一步:理解行为背后的需求
• 观察触发场景:记录孩子吃手指时的状态(如睡前焦虑、无聊、特定环境)
• 睡前10分钟谈心:用「今天什么事情让你最开心/有点担心?」开启对话,帮助孩子释放情绪
第二阶段:建立替代安抚系统

引入「睡眠伙伴」仪式

让孩子挑选专属的安抚物(如触感柔软的玩偶、有妈妈香味的方巾)
设计「哄睡伙伴入睡」游戏:「小熊也困了,你能用手轻轻拍它睡觉吗?」

触觉替代方案

提供硅胶安抚项链(选择可啃咬的安全材质)
睡前手部按摩:用温热的燕麦乳涂抹双手,边按摩边讲故事

第三阶段:游戏化戒除策略
• 21天挑战日历:制作星空主题打卡表,每天成功用「魔法手环」(装饰手链)代替吃手,就贴一颗星星
• 手指冒险故事:编创手指精灵的故事,如「大拇指队长说,如果晚上好好休息,明天就能更有力气搭积木城堡」
第四阶段:生理防护+正向反馈

无害防护:使用透气指套或创可贴(让孩子选择喜欢的图案),强调「这是保护手指的超级英雄盾牌」
进步奖励:不以「整天不吃手」为标准,而是奖励阶段性进步,如「连续3天手指干爽」可获得「延长15分钟绘本时间」

特殊情况处理:
若观察到伴随咬指甲、揪头发等行为,或半年未见改善,建议:

儿童牙医检查牙齿咬合情况
通过沙盘游戏等非侵入方式了解潜在焦虑源
考虑感觉统合训练(如黏土游戏、豆袋按压等触觉脱敏)

关键要点:
• 避免在过渡期频繁提及「不许吃手」,用「我们试试新方法」替代否定句式
• 重大生活变化期间(如入园、分房)可暂时放宽要求
• 家长同步处理自身焦虑,避免将压力传递给孩子
通常通过2-3个月的耐心引导,多数孩子能自然过渡。过程中请保持「进步比完美更重要」的心态,每个小突破都值得庆祝。

Posted in 生活 | Tagged | Leave a comment

终于实现了照片备份到NAS的终极方案(感觉一般,不过PhotoPrism不错)

为什么要存到NAS

一直不愿意用一些云相册或者网盘之类的服务来备份和保存自己的照片,主要是两个原因:

  1. 不想自己的隐私被这些服务方一直视奸,你传上去的照片视频肯定会被这些服务方扫描一遍的,就算没有私密的照片,我也接受不了隐私被这样侵犯
  2. 不想自己的数据被绑架,毕竟数据是别人手上,哪天别人要跑路或者涨价,你也没有任何办法

过于尝试的方案

群晖 moments

最开始NAS装了群晖,于是就用了群晖自带的moments来同步照片.用了一段时间后出现了一些问题:

  1. moments app几乎不再更新,体验不算差,但绝对不好,老婆总是抱怨ios上这不好用那不好用
  2. 与群晖绑定,因为必须搭配moments服务端一起使用,所以你没有任何别的选择,这让我感觉很被动

现在似乎群晖已经淘汰moments了,出了新的群晖photos,这个我没有试用过,因为群晖硬件还是太贵了,现在已经改用Unraid了

PhotoPrism – 超好用

不得不说PhotoPrism确实太好用了,我最喜欢它的一点是他的兼容性很强,你只要丢给它一个目录,他就能处理里面的所有照片,并且可以在各个维度进行检索,对于超大量的照片来说真的很好用.

但问题就在于PhotoPrism只有服务端,把照片同步到NAS这个动作还要我自己想办法来完成

PhotoSync – 不值得这个价格

这个app的功能还是可以的,但是它的UI和交互是在是有点古老,我还需要专门用一个app来进行同步这个事情,最重要的是要付费才能用,我觉得不太值得,放弃.

Nextcloud – 移动端app太差

Nextcloud作为网盘来说挺好用的,我尝试使用Nextcloud的移动端来同步相册照片.但我真的安装了安卓端app后,连接了我https反代后的URL居然直接崩溃了,完全没法用,放弃.

Alist + Pho + Rclone + PhotoPrism – 终极方案

这个方案最让我喜欢的一点是各个环节都不是耦合的,去掉其中任何一个环节都不会影响到其他环节,每个人完全可以根据自己的喜好来替换其中的某个部分.

Alist

官网https://alist.nn.ci/zh/
负责把各种可用的储存映射成webdav,支持各种云盘网盘以及本地储存
Alist

Pho

官网https://pho.tools/
负责通过webdav上传照片到Alist映射的储存
它很好的一点是支持加密后上传,这样就可以在网盘上做二次备份,在能避免隐私泄露的前提下多一层数据保险
而且我可以在手机上直接用这个app来浏览我本地和已经上传的照片,这个app的UI和交互都很好,可以直接用它来代替系统自带的相册
Pho

Rclone

官网https://rclone.org/
负责把Alistwebdav映射到NAS的文件系统内,来把照片喂给PhotoPrism

PhotoPrism

官网https://www.photoprism.app/
最终的”集大成者”,全家所有设备备份的照片最终全部喂到这里,即使是海量照片也能根据它快速索引到自己想找的照片
PhotoPrism

最终效果

平时手机上浏览和上传

使用Pho浏览本地和最近上传的照片

查找和浏览过去某个时候的照片

根据信息用PhotoPrism检索即可

Posted in 生活 | Leave a comment

清理桌面,整理系统

其实也不是很难,花了半个小时就搞定了,主要是工具太强大了!

虽然360很鄙视他,不过存在即道理,的确很不错,清理起来很方便很快捷。清理了1g的垃圾文件,卸载了一些不用的垃圾软件,更新了系统,很快速。明显感觉系统速度得到了提升。

我现在使用本本有个心得,就是不关机,盒上屏幕就自动待机了。爽。开机也快,,哈哈,开启系统及硬件监控,进程/硬件什么的看的一清二楚,爽字一个了得!

只是文件删除了很多,全部删除,不愿动的地方就随他去了。BTW,kugou音乐真垃圾。听了20首,愣是没听到上档次的,郁闷啊!闹的很。

现在这个blog算是彻底费了,垃圾评论一堆,有意思么?后台几天不看,居然2w多的垃圾评论,想来也好笑的,这个zcde.com郁闷处于黑名单,你发垃圾评论有意思么??? 有意思么????
刚后台DELETE from wp_comments WHERE comment_approved = ‘0’;
写完这个帖子,赫然发现comments unapproved 47~God!

想转移blog,虽然不写很长时间,记得当时买下fastdomain就是想打着长期不动的打算,不过计划永远敢不上计划,突然发现虽然blogger处于协和的状态,虽然用的人很少,可是有关系么??有关系么?于是ssh上blogger看来下,很多垃圾文章,于是all 清除,结果所有文章也一并清除了,郁闷啊。。这,可如何是好。。想到导入,结果提示服务器错误。只好继续弄了,现在对blog有点疲劳,blogger也没什么好的发布软件,只能通过邮件发布,貌似也不够灵活,失败失败,看来只好整合一个图床,然后自己随便ftp发布到自己的空间上了!只是评论也是个问题,基于也没什么人来看,搞个第三方的评论???听起来不错

完蛋,这个spam太威猛了,鉴于这个帐号有好几个blog,每个blog都是spam泛滥,没的办法,我怀疑每秒都有spam不停的进入,真郁闷,也就我说话的功夫,已经100条spam了,这速度,刚直接“此网页无法访问。”,这。看来还得来狠的。
UPDATE wp_post SET comment_status=’close’
spam威猛,猛于虎也!

难得,居然遭遇服务器故障,造成了至少二十分钟的宕机,这也太强悍了,正好被我抓到,我还以为垃圾评论太多,不堪重负呢。
想想还是算了。直接加个数学加减验证得啦,spam,你能来的更猛烈些么?

世界总算清净了!

Posted in 生活 | 2 Comments

平安夜说牛鬼蛇神

举头三尺有神明,
不畏人知畏己知。

Posted in 生活 | Leave a comment

blogger.com 火车头发布模块放出

最近居然还有人问我要这个 blogger的发布模块,实在很是意外,毕竟blogger现在使用https协议来访问了,所以存在加密的问题,很多人做的类似的模块都已经失效,我放出的这个模块,不会随着blogger的更新而有所改变,具体的特点如下:

1,使用外部php接口,所以不会失效。
2,一次可发布到多个bloggspot。
3,不支持tag系统。

虽然有着些许缺陷,但总聊胜于无,需要的兄弟自行取之,我记得那段时间发布到火车头论坛的时候被人说放马,说骗子的都有,还有说失效的,简直匪夷所思,因为经我测试到现在还好好的。那段时间我记得blogger模块要卖到100rmb。

使用方法:
我承认如果不做些说明,的确很难使用。
1,后台开启email发布选项,设置好发布email地址备用。
2,发布接口:http://www.zcde.com/pub/index.php
3,其余的请根据模块中的标签自行设置。

ok,所有到此结束,因为有兄弟需要,省的我浪费口舌一个个解释和说明,就此放出。非商业用途。
下载,请右键另存为

Posted in 网络相关, 资源 | Leave a comment

电脑桌面上的所有图标突然变成无法识别的解决办法

问题分析:图片缓存丢失!
解决方法:桌面点右键–属性-显卡选项(设置)–更改分辨率属性,将颜色质量调成16位色,确定,然后再调回原来的32位色。

Posted in 生活 | Leave a comment

冯小刚向MJ看齐

金鸡百花红地毯,冯导黑帽白癜风。是不是头发也没了?

主持:“你认为幸福是什么?”

冯导:没想过。

Posted in 生活 | 1 Comment