WordPress搜索页如何显示搜到的文章数量

在搜索结果页面显示搜到的文章数量,能给访客一个更好的搜索体验。在WordPress中,很多教程介绍的都是下面这种比较搓方法,在主题目录下的search.php的适当位置添加以下代码:

<h2 class="pagetitle">搜索关键字:
  <?php
  /* Search Count */ 
  $allsearch = &new WP_Query("s=$s&showposts=-1");
  $key = wp_specialchars($s, 1);
  $count = $allsearch->post_count;
  echo '<span class="search-terms">' . $key . '</span>';
  echo '<br />搜索到 ' . $count . ' 条结果';
  wp_reset_query(); ?>
</h2>

    这种方法的原理是重新建立一次数据库读取操作,然后计算读取到的结果数。这种方法既要写一段长长的复杂的代码,又多出一次数据库操作,耗费资源又浪费时间。而且如果你指定了搜索某个分类,那么上面的代码统计就会出现错误,还需要重新修改。

     我们可以用一种更简短的代码来获取搜索结果的文章数量,统计效果更加准确,不需要做太多的条件分享,在search.php的适当位置添加以下代码即可:

<?php
  global $wp_query;
  echo '搜到 ' . $wp_query->found_posts . ' 篇文章';
?>

这个代码更加简短,而且使用的是WordPress的原先建立的wp_query对象的值,省时省力!

如何更改wordpress的title,使用自定义的字段

有时候我们想自定义wordpress中title,
方法是在后台添加一个自定义的字段,比如 seo_title
然后把以下代码添加在functions

// 网站更改title 使用后面自定义的字段
function modify_html_title($string)
{
    if (!is_singular()) {
        return  $string;
    }
    $count_key = 'seo_title';  //seo_title后台自定义的字段
    global $post;
    $content = get_post_meta($post->ID, $count_key, true);
    if (!$content) {
        return  $string;
    } 
    return  $string.$content.' - ';   
}
add_filter( 'wp_title', 'modify_html_title', 10, 2 );

wordpress主题给评论添加自定义字段

wordpress 主题评论默认只有昵称 邮箱 网址三个选项,如何添加一些其他自定义字段呢

wordpress 主题评论默认只有昵称 邮箱 网址三个选项,如何添加一些其他自定义字段呢,如 qq\微信\手机号等

首先是需要丰富 form 表单结构:

<p>
<label for="tel">手机号</label>
<input type="text" name="tel" class="text" id="tel" value="<?php echo get_comment_meta($comment->comment_ID,'tel',true); ?>" tabindex="3"/>
</p>
<p>
<label for="weixin">微信号</label>
<input type="text" name="weixin" class="text" id="weixin" value="<?php echo get_comment_meta($comment->comment_ID,'weixin',true); ?>" tabindex="4"/>
</p>
<p>
<label for="qq">QQ 号</label>
<input type="text" name="qq" class="text" id="qq" value="<?php echo get_comment_meta($comment->comment_ID,'qq',true); ?>" tabindex="5"/>
</p>

然后是将提交的数据写入数据库

//wordpress 新增文章评论表单字段,如手机、微信、QQ 等
add_action('wp_insert_comment','wp_insert_tel',10,3);
function wp_insert_tel($comment_ID,$commmentdata) {
    $tel = isset($_POST['tel']) ? $_POST['tel'] : false;
    $weixin = isset($_POST['weixin']) ? $_POST['weixin'] : false;
    $qq = isset($_POST['qq']) ? $_POST['qq'] : false;  
    update_comment_meta($comment_ID,'tel',$tel);//tel 是存储在数据库里的字段名字
    update_comment_meta($comment_ID,'weixin',$weixin);//weixin 是存储在数据库里的字段名字
    update_comment_meta($comment_ID,'qq',$qq);//qq 是存储在数据库里的字段名字
}

最后是在后台评论列表显示出来

add_filter( 'manage_edit-comments_columns', 'my_comments_columns' );
add_action( 'manage_comments_custom_column', 'output_my_comments_columns', 10, 3 );
function my_comments_columns( $columns ){
    $columns[ 'tel' ] = __( '电话' );        //电话是代表列的名字
    $columns[ 'weixin' ] = __( '微信号' );   //微信号是代表列的名字
    $columns[ 'qq' ] = __( 'QQ 号' );        //QQ 号是代表列的名字
    return $columns;
}
function output_my_comments_columns( $column_name, $comment_id ){
    switch( $column_name ) {
case "tel" :
echo get_comment_meta( $comment_id, 'tel', true );
break;
case "weixin" : 
echo get_comment_meta( $comment_id, 'weixin', true ); 
break;
case "qq" :
echo get_comment_meta( $comment_id, 'qq', true );
break;
     }
}

WordPress实现评论提交后跳转的方法

很多采用WordPress程序搭建的博客都相当重视与读者之间的互动,以评论为例,为了提高读者的体验质量,有的博主会专门给评论者提供一个“感谢”的页面,也就是说,评论者发表评论后即被重定向到这个指定的“感谢”页面,这类感谢“页面里有些内容是博主自己设计好的,比如“感谢你参与本文的讨论!”等诸如此类的提示,这在一定程度上让评论者感受到博主的热情与细心。文本讲述了在WordPress上实现这样的效果的方法。
假设你已经创建了一个“感谢”页面,其英文名为thank-you,这个操作步骤相信大家都懂得,就在后台控制面板的“添加新页面”里可以创建了,这里需要记住这个thank you页面的URL,后面要用到。

运用执行挂勾(action hook)来实现

WordPress 中有一种叫执行挂勾的机制,允许插件把一些功能“挂载”到 WordPress 当中。也就是说,在系统运行至某一个环节时,去调用插件内的一些函数。更多关于“执行挂钩”的说明,请参考WordPress中文插件 API 文档。
在本例中,我们将使用 comment_post_redirect 这条hook. 打开主题文件 functions.php,然后添加以下几行代码:

// Redirect to thank you post after comment
add_action('comment_post_redirect', 'redirect_to_thank_page');
    function redirect_to_thank_page() {
    return 'http://localhost/thank-you';
}

修改wordpress列表页默认显示文章的数量和排序方式

修改模板archive文章分类的显示条数

今天看到首页显示文章15条在后台可以控制,而某个分类下只显示10条内容。因为去图片展示所以导致页面显示不完整。

所以修改内容页面也显示15条。修改如下:

1.可以添加代码至相关页面模板(category.php、search.php、archive.php)

把如下代码:

<?php $posts = query_posts($query_string . '&orderby=date&showposts=15'); ?>

添加至category.php、search.php、archive.php或其它页面模板中,以下函数之前:

<?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>

代码中的15就是显示多少条。

个人建议:首页显示的文章数通过后台来控制,其他的嘛,就用这句代码来搞定。

2.并且可以更改代码中的 orderby=date 还可以按ID 什么的 具体看你自己的需求了。

给WordPress页面添加文章摘要功能

WordPress页面默认是没有摘要功能,但是我们在做一些网站的时候往往会用到这个功能,这个时候就要用到 add_post_type_support 函数了。将以下代码添加至WordPress主题的 functions.php:

add_action('init', 'page_excerpt');
function page_excerpt() {
    add_post_type_support('page', array('excerpt'));
}

调用方法和文章摘要相同

if( has_excerpt() ){
    the_excerpt();
}

WordPress query_posts按自定义字段排序

我正在尝试通过自定义字段使用query_posts函数来排序我的结果.

这是我编辑的query_posts()函数:

query_posts( "post_type=produkte&".$query_string."&orderby=Price&order=DESC" );
query_posts( "post_type=produkte&".$query_string."&meta_key=Price&orderby=meta_value_num&order=DESC" );

polylang 注册字符串翻译

关于插件的安装就不多说了,重点说下小型站点在多语言开发过程中遇到的一个关键性问题,就是对于主题页面中的装饰性文字,向导性文字该如何处理。比如说,最新文章这类文字应该如何处理。

Polylang插件中有一个函数就是解决这个问题的。

例如:

pll_register_string(myDate, "发布时间");

那么主题中调用这个文字的时候就应该如下表述:

<?php echo pll__("发布时间") ?>

其中“发布时间”是在中文版本中显示的文字,mydate是这个变量的名称。

TP5 分页(带参数传递)

不带参数:

$rs = Db::name('admin')->order(['id'=>'desc'])->paginate(1);

带参数传递:

$rs=Db::name('admin')->where($where)->order(['id'=>'desc'])->paginate(10,false,['query' => request()->param()]);

[‘query’ => request()->param()],有多少个参数传递都会自动给你增加上,不用一个一个参数这样子写的(->paginate(10,false,[‘query’ => [‘cate_id’=>$cate_id], [‘keyword’=>$keyword]]);  )

paginate(10,false,['query' => request()->param()]);

WordPress 后台用户根据注册时间排序

在当前主题的 functions.php 中添加以下 php 代码即可:

//WordPress 后台用户根据注册时间排序
//添加用户注册时间列
add_filter( 'manage_users_columns', 'my_users_columns' );
function my_users_columns( $columns ){
    $columns[ 'registered' ] = '注册时间';
    return $columns;
}
//通过 manage_users_custom_column 钩子返回值排序
add_action( 'manage_users_custom_column', 'output_my_users_columns', 10, 3 );
function  output_my_users_columns( $var, $column_name, $user_id ){
    switch( $column_name ) {
        case "last_activity" :
            return get_user_meta($user_id, 'last_activity', true);
        case "registered" :
            return get_user_by('id', $user_id)->data->user_registered;
        case "sex" :
            return get_user_meta($user_id, 'sex', true);
        case "occ" :
            return get_user_meta($user_id, 'occ', true);
        case "qq" :
            return get_user_meta($user_id, 'qq', true);
            break;
    }
}
//让添加的“注册时间”可以点击,也就是添加链接并且右边有一个小箭头
add_filter( "manage_users_sortable_columns", 'wenshuo_users_sortable_columns' );
function wenshuo_users_sortable_columns($sortable_columns){
    $sortable_columns['registered'] = 'registered';
    return $sortable_columns;
}
//最后根据浏览器的 url,重新设置 wordpress 的查询函数
add_action( 'pre_user_query', 'wenshuo_users_search_order' );
function wenshuo_users_search_order($obj){
    if(!isset($_REQUEST['orderby']) || $_REQUEST['orderby']=='registered' ){
        if( !in_array($_REQUEST['order'],array('asc','desc')) ){
            $_REQUEST['order'] = 'desc';
        }
        $obj->query_orderby = "ORDER BY user_registered ".$_REQUEST['order']."";
    }
}

以上就是 wordpress 后台用户列表添加注册时间以及按注册时间排序的全部代码。