干货教程:php自动生成二维码与Emlog(个人博客系统)下载评论软件详情对比
优采云 发布时间: 2022-11-06 14:22干货教程:php自动生成二维码与Emlog(个人博客系统)下载评论软件详情对比
emlog是“Every Memory Log”的缩写,意思是:一点点内存。Emlog是个人或多人基于PHP语言和MySQL数据库编写的开源、免费、强大的博客系统(blog)。一个基于 PHP 和 MySQL 的强大博客和 cms 网站构建系统。致力于提供快速、稳定、使用中极其简单舒适的博客服务。安装使用非常方便。目前,emlog正受到越来越多用户的青睐。
EMLOG-项目介绍
兼容性:火狐2.0及以上,IE6.0及以上,safari3opera9
推荐运行环境:php5.2及以上+mysql5.0及以上
推荐使用 Linux+Apache 主机。Apache主机对emlog伪静态支持配置好,配置简单。
emlog的功能很强大,模板和插件很多,很容易扩展功能,简洁而不简单。
特征
支持日志url自定义,对搜索引擎更友好
独有微语(微博)功能,让你用简单的图文记录生活
一键更换模板,方便快捷创建个性化博客,支持模板在线和本地安装
强大的插件扩展功能,支持在线和本地安装,让您的博客无限可能
清爽的写日志页面,自动保存,写博文更舒心省心
日志草稿箱功能,轻松保存未完成的日志
完美支持手机访问,随时随地记录你的生活
支持离线写作,可以使用Windows Live Write等软件写博文
灵活的侧边栏组件(小部件)管理,轻松组合和自定义您喜欢的组件
自定义页面,轻松创建留言板、导航栏、博主介绍等个性化页面。
多人合着,后台多作者轻松管理
支持灵活的标签分类,以及传统的分类方法
方便的附件(图片、文件)上传和管理,支持批量上传
上传的图片可以随意、直观的嵌入到日志内容中,让你的日志图文并茂。
家庭日历模式查看日志,方便、直观、快捷
数据缓存技术,博客访问速度更快
整体使用 UTF-8 编码,让你的博客与世界接轨
使用跨浏览器的可视化日志编辑器轻松编辑 文章 格式
支持RSS日志输出功能,方便朋友订阅和关注你的博客
新版本全面支持二级分类,可随意创建导航下拉菜单
在线自动版本更新,傻瓜式操作,丢弃FTP软件
数据库备份/恢复功能
用户可以在支持 PHP 语言和 MySQL 数据库的服务器上建立自己的博客。
推荐文章:如何在 WordPress 中复制/克隆页面或文章
当我们需要大部分相同的格式、标签、分类法、自定义字段、SEO 数据等时,我们需要复制页面或 文章 功能。在本教程中,我们将学习如何在 WordPress 中复制页面或 文章。我们可以使用或不使用插件来做到这一点。
因此,我们将在 文章 列表或页面列表页面上创建一个锚链接,当我们单击该链接时,它将创建一个具有相同内容的新 文章 并将其保存为草稿。
但是没有复制功能,你必须一个一个地检查所有的字段,然后再新建一个文章。
开始吧!
文章目录
使用插件或 文章 复制页面
WordPress 文章 或页面可以使用插件轻松复制。因为它为您提供了所有功能,您只需单击操作链接即可克隆页面。
以下是我们推荐的一些有用的 文章 复制插件:
1. 重复页面
复制页面插件允许您一键复制您的页面、文章 和自定义 文章 类型的 文章,并将保存为您选择的选项(草稿、私人、公开,待定)。
2.重复页面和帖子
复制页面和帖子插件是一个非常轻量级的插件,它是最快的复制器。它提供了创建页面克隆或 文章 的能力。
3. 后期复印机
Post Duplicator 插件将选择页面的 文章 或完全相同的副本。它可以复制 文章、page 和自定义 文章 类型,并支持自定义分类和自定义字段。
4. Yoast 重复帖子
Yoast Duplicate Post 插件允许用户克隆任何类型的 文章,或将它们复制到新草稿中以供进一步编辑。在编辑帖子/编辑页面中,您可以单击帖子/页面标题下方的克隆链接:这将立即创建一个副本并将其返回到列表中。
添加通过代码复制 文章 的功能
在这个方法中,我们将创建一个复制 WordPress 页面或 文章 的函数。我们将在 functions.php 文件中添加一个代码片段。
注意:我建议您使用子主题对 网站 进行任何自定义,或者使用代码片段来管理代码片段。
添加复制功能
/*
* Function creates post duplicate as a draft and redirects then to the edit post screen
*/
function duplicate_post_or_page(){
global $wpdb;
if (! ( isset( $_GET['post']) || isset( $_POST['post']) || ( isset($_REQUEST['action']) && 'duplicate_post_or_page' == $_REQUEST['action'] ) ) ) {
wp_die('No post to duplicate has been supplied!');
}
/*
* Nonce verification
*/
if ( !isset( $_GET['duplicate_nonce'] ) || !wp_verify_nonce( $_GET['duplicate_nonce'], basename( __FILE__ ) ) )
return;
/*
* get the original post id
*/
$post_id = (isset($_GET['post']) ? absint( $_GET['post'] ) : absint( $_POST['post'] ) );
/*
* and all the original post data then
*/
$post = get_post( $post_id );
<p>
/*
* if you don't want current user to be the new post author,
* then change next couple of lines to this: $new_post_author = $post->post_author;
*/
$current_user = wp_get_current_user();
$post_author = $current_user->ID;
/*
* if post data exists, create the post duplicate
*/
if (isset( $post ) && $post != null) {
/*
* new post data array
*/
$args = array(
'comment_status' => $post->comment_status,
'ping_status' => $post->ping_status,
'post_author' => $post_author,
'post_content' => $post->post_content,
'post_excerpt' => $post->post_excerpt,
'post_name' => $post->post_name,
'post_parent' => $post->post_parent,
'post_password' => $post->post_password,
'post_status' => 'draft',
'post_title' => $post->post_title,
'post_type' => $post->post_type,
'to_ping' => $post->to_ping,
'menu_order' => $post->menu_order
);
/*
* insert the post by wp_insert_post() function
*/
$new_post_id = wp_insert_post( $args );
/*
* get all current post terms ad set them to the new post draft
*/
$taxonomies = get_object_taxonomies($post->post_type);
foreach ($taxonomies as $taxonomy) {
$post_terms = wp_get_object_terms($post_id, $taxonomy, array('fields' => 'slugs'));
wp_set_object_terms($new_post_id, $post_terms, $taxonomy, false);
}
/*
* duplicate all post meta just in two SQL queries
*/
$post_meta = $wpdb->get_results("SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=$post_id");
if (count($post_meta)!=0) {
$sql_query = "INSERT INTO $wpdb->postmeta (post_id, meta_key, meta_value) ";
foreach ($post_meta as $meta_info) {
$meta_key = $meta_info->meta_key;
if( $meta_key == '_wp_old_slug' ) continue;
$meta_value = addslashes($meta_info->meta_value);
$sql_query_sel[]= "SELECT $new_post_id, '$meta_key', '$meta_value'";
}
$sql_query.= implode(" UNION ALL ", $sql_query_sel);
$wpdb->query($sql_query);
}
/*
* finally, redirect to the edit post screen for the new draft
*/
wp_redirect( admin_url( 'post.php?action=edit&post=' . $new_post_id ) );
exit;
} else {
wp_die('Post creation failed, could not find original post: ' . $post_id);
}
}
add_action( 'admin_action_duplicate_post_or_page', 'duplicate_post_or_page' );</p>
上面的代码将创建一个 文章 具有相同的内容,如标签、类别、自定义字段等。所以将此代码添加到主题的 functions.php 文件并保存。
将复制链接添加到 文章 列表
上面我们创建了一个函数来复制 WordPress 文章 或页面并将新的 文章 作为具有相同数据的草稿。下面的代码将在运行上述函数的列表页面上创建一个新操作。因此,在主题的 functions.php 文件中添加以下代码并保存。
/*
* Add the duplicate link to the action list for post_row_actions
*/
function duplicate_post_link( $actions, $post ) {
if (current_user_can('edit_posts')) {
$actions['duplicate'] = 'Duplicate';
}
return $actions;
}
add_filter( 'post_row_actions', 'duplicate_post_link', 10, 2 );
在主题的 functions.php 文件中添加两个代码块后,您将在帖子列表页面上看到一个新的操作链接。标签将为 Duplicate,您可以将其更改为克隆或复制。
现在您可以通过单击复制操作链接来克隆您的 WordPress 文章。它将创建一个具有相同内容的新 文章 并将您重定向到编辑帖子页面。您可以在此处发布或草稿。
但是,如果您还想复制 WordPress 页面怎么办?
不用担心!您无需为此创建额外的功能。我们将使用与上面相同的功能,只是添加一个过滤器挂钩行来运行上面的页面并显示页面的重复链接。
将复制链接添加到页面列表
在添加上述代码【在文章列表中添加复制链接】的基础上,只需在主题的functions.php文件中添加如下代码,即可为页面显示相同的复制链接。
add_filter('page_row_actions', 'duplicate_post_link', 10, 2);
效果如下:
总结
在本教程中,我们介绍了使用插件或代码一键复制文章/页面的功能,希望对您有所帮助。如果您有任何问题,请在下方发表评论。
进一步阅读:
声明:本站所有文章,除非另有说明或标记,均发布在本站原创。任何个人或组织未经本站同意,不得复制、盗用、采集、将本站内容发布到任何网站、书籍等媒体平台。本站内容如有侵犯原作者合法权益的,您可以联系我们处理。