WordPress Justnews主题友链申请页面

4.6
(7)

今天,Justnews主题售后群,有人送了我个友链申请模板。虽然看起来跟justnews主题不太搭,但经过魔改适配,最终还是很完美的。而且,实现了登录后才可以申请友链的方法。提交表单后,直接在后台自动新增一个友情链接,标注待审核,并标记为私密链接。

等待站长去后台看到友链,稍作修改,就可以立马添加友链,不用再自己添加网址、添加网站标题等,着实很方便。

Wordpress 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]

共计7人评分,平均4.6

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

原创文章,作者:古哥,转载需经过作者授权同意,并附上原文链接:https://iymark.com/articles/1649.html

(3)
微信公众号
古哥的头像古哥管理团队
上一篇 2021年02月03日 22:43
下一篇 2021年02月06日 17:40

你可能感兴趣的文章

发表回复

登录后才能评论

评论列表(6条)

  • 剑心的头像
    剑心 2022年08月20日 23:58

    出问题了,谷哥笑哭 我的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:”,

    我只看懂了个大概,貌似是说因为提交了链接信息,导致数据库错误。但不知道怎么解决呢

    • 古哥的头像
      古哥 2022年08月21日 00:39

      @剑心你是justnews主题吗

    • 古哥的头像
      古哥 2022年08月21日 00:43

      @剑心我访问了下你的页面,没问题啊。(上述错误代码中有你的网址)

    • 剑心的头像
      剑心 2022年08月21日 00:45

      @古哥嗯,提交网址后 后台【链接】收不到新增的请求,当时我提交就成功了1次。

    • 古哥的头像
      古哥 2022年08月21日 00:47

      @剑心这个确实有bug,我也没解决。

    • 剑心的头像
      剑心 2022年08月21日 00:51

      @古哥嗯嗯,没关系 我再自己琢磨琢磨。麻烦这么晚打扰你了大笑

    微信小程序
    微信公众号