今天,Justnews主题售后群,有人送了我个友链申请模板。虽然看起来跟justnews主题不太搭,但经过魔改适配,最终还是很完美的。而且,实现了登录后才可以申请友链的方法。提交表单后,直接在后台自动新增一个友情链接,标注待审核,并标记为私密链接。
等待站长去后台看到友链,稍作修改,就可以立马添加友链,不用再自己添加网址、添加网站标题等,着实很方便。
下面,就开始讲述如何做到,并于文末给出下载链接。
未修改前的php文件
<?php /* Template Name: 自助申请友链 * 提示:友情链接,需在后台审核 */ ?> <?php if( isset($_POST['blink_form']) && $_POST['blink_form'] == 'send'){ global $wpdb; // 表单变量初始化 $link_name = isset( $_POST['blink_name'] ) ? trim(htmlspecialchars($_POST['blink_name'], ENT_QUOTES)) : ''; $link_url = isset( $_POST['blink_url'] ) ? trim(htmlspecialchars($_POST['blink_url'], ENT_QUOTES)) : ''; $link_description = isset( $_POST['blink_lianxi'] ) ? trim(htmlspecialchars($_POST['blink_lianxi'], ENT_QUOTES)) : ''; // 联系方式 $link_target = "_blank"; $link_visible = "N"; // 表示链接默认不可见 // 表单项数据验证 if ( empty($link_name) || mb_strlen($link_name) > 20 ){ wp_die('连接名称必须填写,且长度不得超过30字<p><a href="/links">点此返回</a>'); } if ( empty($link_url) || strlen($link_url) > 60 ) { //验证url wp_die('链接地址必须填写<p><a href="/links">点此返回</a>'); } $sql_link = $wpdb->insert( $wpdb->links, array( 'link_name' => '【待审核】--- '.$link_name, 'link_url' => $link_url, 'link_target' => $link_target, 'link_description' => $link_description, 'link_visible' => $link_visible ) ); $result = $wpdb->get_results($sql_link); wp_die('链接提交成功,【等待站长审核】<p><a href="/">返回首页</a>', '提交成功'); } get_header(); ?> <div id="main"> <div class="container"> <div class="content content-link-application"> <div class="form-header"> <h1>友链申请</h1> <p>您可以通过提交下面的表单贵站相关信息。</p> </div> <div class="wb-form contact-form nice-validator n-default"> <!--表单开始--> <form method="post" class="mt20" action="<?php echo $_SERVER["REQUEST_URI"]; ?>"> <div class="form-group"> <label for="blink_name"><font color="red">*</font> 网站名称:</label> <input type="text" size="40" value="" class="form-control" id="blink_name" placeholder="请输入网站名称" name="blink_name" /> </div> <div class="form-group"> <label for="blink_url"><font color="red">*</font> 网址地址:</label> <input type="text" size="40" value="" class="form-control" id="blink_url" placeholder="请输入网站地址" name="blink_url" /> </div> <div class="form-group"> <label for="blink_lianxi">网站简介:</label> <input type="text" size="40" value="" class="form-control" id="blink_lianxi" placeholder="请输入网站简介" name="blink_lianxi" /> </div> <div> <input type="hidden" value="send" name="blink_form" /> <button type="submit" class="btn btn-primary">提交申请</button> <button type="reset" class="btn btn-default">重填</button> (提示:带有<font color="red">*</font>,表示必填项~) </div> </form> <!--表单结束--> </div> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php endwhile; else: ?> <?php endif; ?> </div> </div> </div> <?php get_footer(); ?>
以上未修改的php文件,命名为links.php,编码格式修改为utf-8
放于主题根目录,再去网站后台新建一个页面,页面模板选自助申请友链,发布即可。以上php文件适合任意wordpress主题,但看起来不是那么完美。
适配justnews主题后的自助申请友链源码
以下源码为修改后的,完美适配justnews主题的源码:
<?php /* Template Name: 自助申请友链 * 提示:友情链接,需在后台审核 */ ?> <?php if (! is_user_logged_in()) { auth_redirect(); } if( isset($_POST['blink_form']) && $_POST['blink_form'] == 'send'){ global $wpdb; // 表单变量初始化 $link_name = isset( $_POST['blink_name'] ) ? trim(htmlspecialchars($_POST['blink_name'], ENT_QUOTES)) : ''; $link_url = isset( $_POST['blink_url'] ) ? trim(htmlspecialchars($_POST['blink_url'], ENT_QUOTES)) : ''; $link_description = isset( $_POST['blink_lianxi'] ) ? trim(htmlspecialchars($_POST['blink_lianxi'], ENT_QUOTES)) : ''; // 联系方式 $link_target = "_blank"; $link_visible = "N"; // 表示链接默认不可见 // 表单项数据验证 if ( empty($link_name) || mb_strlen($link_name) > 20 ){ wp_die('连接名称必须填写,且长度不得超过30字<p><a href="/links">点此返回</a>'); } if ( empty($link_url) || strlen($link_url) > 60 ) { //验证url wp_die('链接地址必须填写<p><a href="/links">点此返回</a>'); } $sql_link = $wpdb->insert( $wpdb->links, array( 'link_name' => '【待审核】--- '.$link_name, 'link_url' => $link_url, 'link_target' => $link_target, 'link_description' => $link_description, 'link_visible' => $link_visible ) ); $result = $wpdb->get_results($sql_link); wp_die('链接提交成功,【等待站长审核】<p><a href="/">返回首页</a>', '提交成功'); } get_header(); global $options, $post; $sidebar = get_post_meta( $post->ID, 'wpcom_sidebar', true ); $sidebar = !(!$sidebar && $sidebar!==''); $body_classes = implode(' ', apply_filters( 'body_class', array() )); $show_indent = isset($options['show_indent']) ? $options['show_indent'] : get_post_meta($post->ID, 'wpcom_show_indent', true); $hide_title = 0; if(preg_match('/(qapress|member-profile|member-account|member-login|member-register|member-lostpassword)/i', $body_classes)) { $hide_title = 1; } if($sidebar && preg_match('/(member-account|member-login|member-register|member-lostpassword)/i', $body_classes)){ $sidebar = 0; update_post_meta($post->ID, 'wpcom_sidebar', '0'); } $class = $sidebar ? 'main' : 'main main-full'; $page_template = get_post_meta($post->ID, '_wp_page_template', true); if($page_template == 'page-fullwidth.php' || $page_template == 'page-fullnotitle.php'){ update_post_meta($post->ID, '_wp_page_template', 'default'); update_post_meta($post->ID, 'wpcom_sidebar', '0'); } if($page_template == 'page-notitle.php' || $page_template == 'page-fullnotitle.php'){ update_post_meta($post->ID, '_wp_page_template', 'default'); } $banner = get_post_meta( $post->ID, 'wpcom_banner', true ); if(!$hide_title && $banner){ $banner_height = get_post_meta( $post->ID, 'wpcom_banner_height', true ); $text_color = get_post_meta( $post->ID, 'wpcom_text_color', true ); $bHeight = intval($banner_height ? $banner_height : 300); $bColor = ($text_color ? $text_color : 0) ? ' banner-white' : ''; $description = term_description(); ?> <div <?php echo wpcom_lazybg($banner, 'banner'.$bColor, 'height:'.$bHeight.'px;');?>> <div class="banner-inner container"> <h1><?php the_title(); ?></h1> </div> </div> <?php } ?> <div class="wrap container"> <style> @media (min-width: 991px){ .el-boxed .hentry { padding: 30px 200px!important; }} </style> <?php if( !$hide_title && isset($options['breadcrumb']) && $options['breadcrumb']=='1' ) wpcom_breadcrumb('breadcrumb'); ?> <div class="<?php echo esc_attr($class);?>"> <?php while( have_posts() ) : the_post();?> <article id="post-<?php the_ID(); ?>" <?php post_class();?>> <div class="entry"> <?php if(!$banner && !$hide_title){ ?> <div class="entry-head"> <h1 class="entry-title"><?php the_title();?></h1> </div> <?php } ?> <div class="entry-content<?php echo $show_indent?' text-indent':''?>"> <!--表单开始--> <form method="post" class="mt20" action="<?php echo $_SERVER["REQUEST_URI"]; ?>"> <div class="form-group"> <label for="blink_name"><font color="red">*</font> 网站名称:</label> <input type="text" size="40" value="" class="form-control" id="blink_name" placeholder="请输入网站名称" name="blink_name" /> </div> <div class="form-group"> <label for="blink_url"><font color="red">*</font> 网址地址:</label> <input type="text" size="40" value="" class="form-control" id="blink_url" placeholder="请输入网站地址" name="blink_url" /> </div> <div class="form-group"> <label for="blink_lianxi">网站简介:</label> <input type="text" size="40" value="" class="form-control" id="blink_lianxi" placeholder="请输入网站简介" name="blink_lianxi" /> </div> <div> <input type="hidden" value="send" name="blink_form" /> <button type="submit" class="btn btn-primary">提交申请</button> <button type="reset" class="btn btn-default">重填</button> (提示:带有<font color="red">*</font>,表示必填项~) </div> </form> <!--表单结束--> <?php wpcom_pagination();?> </div> </div> </article> <?php endwhile; ?> </div> <?php if( $sidebar ){ ?> <aside class="sidebar"> <?php get_sidebar();?> </aside> <?php } ?> </div> <?php get_footer();?>
同样的,主题根目录新建links.php文件,文件编码为utf-8,内容如上。后台新增页面,页面模板为自助申请友链。魔改后的代码,需要登录才可以访问自助申请友链页面。
- 上述代码中的第8-10行,表示登录后才可以访问自助申请友链页面。
- 上述代码中的第76-81行,表示修改大屏幕下表单宽度(左右边距调整为300px)
当然,页面边栏最好选择无边栏,否则不太美观,看自己调整吧。
使用演示
links.php文件下载
由于上面已经提供了源码,这里防止有些人不会新增php文件,直接给出源码文件:
[vk-content]
- 下载链接:https://545c.com/f/30185816-481242669-3da0ab
- 访问密码:3053
- 如果以上链接无法下载,请及时联系站长,下方评论即可
以上源码,下载后直接放到主题目录,然后新建页面即可,不懂就看看上面的几张截图。
[/vk-content]
原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/1649.html
评论列表(6条)
出问题了,谷哥 我的justnews按照本文写的,加了页面。测试提交就成功了1次,在后台看到了之后我删除了 待审核的链接。然后再测试就没反应了,F12看到是错误500,网站没有应用层防火墙程序,服务器装的宝塔,我在宝塔看了网站错误信息,具体的是:
2022/08/20 23:44:33 [error] 418897#0: *68 FastCGI sent in stderr: “PHP message: WordPress数据库查询1时发生You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘1’ at line 1错误,这是由require(‘wp-blog-header.php’), require_once(‘wp-includes/template-loader.php’), include(‘/themes/justnews/links.php’)查询的” while reading response header from upstream, client: 61.160.206.25, server: west2.cn, request: “POST /links HTTP/1.1”, upstream: “fastcgi://unix:/tmp/php-cgi-74.sock:”,
我只看懂了个大概,貌似是说因为提交了链接信息,导致数据库错误。但不知道怎么解决呢
@剑心:你是justnews主题吗
@剑心:我访问了下你的页面,没问题啊。(上述错误代码中有你的网址)
@古哥:嗯,提交网址后 后台【链接】收不到新增的请求,当时我提交就成功了1次。
@剑心:这个确实有bug,我也没解决。
@古哥:嗯嗯,没关系 我再自己琢磨琢磨。麻烦这么晚打扰你了