插件与教程

WordPress默认小工具里标签云的数量和排序

authorCrazy uncle time2021-06-05 view257

遇到一位客户问到

为什么我的标签有300多个,而WordPress的小工具里标签云的展示上却只有很少一部分?

我也是很莫名其妙的,不应该啊,查看了后台发现,确实如此,小工具上标签云的展示数量和排序都是无规则的,确实应该有一些可设置的参数,此小工具才更完美啊,话不多说,直接亮代码了。

/**
 * 添加新选项到标签云小工具
 * @param  [type] $widget   [description]
 * @param  [type] $return   [description]
 * @param  [type] $instance [description]
 * @return [type]           [description]
 */

function cmhello_tag_cloud_new_options( $widget, $return, $instance ) {

    // Are we dealing with a tag_cloud widget?
    if ( 'tag_cloud' == $widget->id_base ) {

        ?>
            <p>
                <label for="<?php echo $widget->get_field_id('tags_number'); ?>"><?php _e( '显示数量:', 'textdomain' ); ?></label>
                <input type="text" class="widefat" id="<?php echo $widget->get_field_id('tags_number'); ?>" name="<?php echo $widget->get_field_name('tags_number'); ?>" value="<?php if (isset ( $instance['tags_number']) && $instance['tags_number']) echo esc_attr( $instance['tags_number'] ); ?>" />
            </p>
            <p>
                <label for="<?php echo $widget->get_field_id('orderbytag'); ?>"><?php _e('排序依据:', 'textdomain' ) ?></label>
                <select  class="widefat" id="<?php echo $widget->get_field_id('orderbytag'); ?>" name="<?php echo $widget->get_field_name('orderbytag'); ?>">
                    <option <?php if ( isset($instance['orderbytag']) && $instance['orderbytag'] == 'name') echo 'selected="SELECTED"'; else echo ''; ?>  value="name"><?php  echo __('名称','textdomain');?></option>
                    <option <?php if ( isset($instance['orderbytag']) && $instance['orderbytag'] == 'count') echo 'selected="SELECTED"'; else echo ''; ?> value="count"><?php echo __('数量','textdomain');?></option>
                </select>
            </p>
            <p>
                <label for="<?php echo $widget->get_field_id('ordertag'); ?>"><?php _e('排序方式:', 'textdomain' ) ?></label>
                <select  class="widefat" id="<?php echo $widget->get_field_id('ordertag'); ?>" name="<?php echo $widget->get_field_name('ordertag'); ?>">
                    <option <?php if ( isset($instance['ordertag']) && $instance['ordertag'] == 'ASC') echo 'selected="SELECTED"'; else echo ''; ?>  value="ASC"><?php  echo __('升序','textdomain');?></option>
                    <option <?php if ( isset($instance['ordertag']) && $instance['ordertag'] == 'DESC') echo 'selected="SELECTED"'; else echo ''; ?> value="DESC"><?php echo __('降序','textdomain');?></option>
                    <option <?php if ( isset($instance['ordertag']) && $instance['ordertag'] == 'RAND') echo 'selected="SELECTED"'; else echo ''; ?> value="RAND"><?php echo __('随机','textdomain');?></option>
                </select>
            </p>
        <?php
    }
}
add_filter('in_widget_form', 'cmhello_tag_cloud_new_options', 10, 3 );

/**
 * 更新标签云新字段的值
 */
function cmhello_tag_cloud_instance($instance, $new_instance, $old_instance) {
    $instance['tags_number'] = stripslashes($new_instance['tags_number']);
    $instance['ordertag'] = stripslashes($new_instance['ordertag']);
    $instance['orderbytag'] = stripslashes($new_instance['orderbytag']);
    return $instance;
}
add_filter('widget_update_callback', 'cmhello_tag_cloud_instance', 10, 3);

/**
 * 通过钩子去修改标签云的参数
 * @param  [type] $args     [description]
 * @param  [type] $instance [description]
 * @return [type]           [description]
 */
function cmhello_tag_cloud_args( $args, $instance){
    if(isset($instance['tags_number'])){
        $args['number'] = $instance['tags_number']; //Limit number of tags
    }
    if(isset($instance['orderbytag'])){
        $args['orderby'] = $instance['orderbytag'];
    }
    if(isset($instance['ordertag'])){
        $args['order'] = $instance['ordertag'];
    }
    return $args;
}
add_filter('widget_tag_cloud_args', 'cmhello_tag_cloud_args', 10, 2);

代码来自wp大学,将以上代码,放入functions.php即可,最终,呈现的设置效果如下图

小工具 标签云 参数设定

完美,搞定。

Get(3)

这些你同样感兴趣

满足你在每个阶段使用模板的需求,帮助你高效完成工作及任务

WordPress Sitemap.xml 移除 wp-sitemap-users

2021-06-23

wwordpress 5.5 后的更新,让站点地图sitemap.xml得到了官方形式的支持,曾几何时wordpress上关于sitemap的插件层出不穷,样式各不相同,标准也各不相同,让我们使用起来总是在犹豫,会不会使…

WordPress后台用户显示昵称

2021-06-17

默认的WordPress后台里,对于用户列表的展现,可能趋于国外化,即主要以用户名和姓名的形式来展现,而到了国内的站点,大多数是希望展现昵称,也只有通过昵称方可知晓该账号是哪位;但在默认的WordPress后台是无昵称一…

WordPress的纯代码实现暗黑模式

2021-06-14

很多朋友的WordPress站点都已支持暗黑模式了,百度一下更是一堆的教程可阅,今天大叔在这里顺便整合的描述一下其逻辑和详细代码。 目前实现暗黑模式的方案有: 一、自动整体方案 Darkmode.js 就是一个按钮,自动…

wordpress 固定链接 %postname% 和 pathinfo 的冲突

2021-05-28

主要冲突表现在,在访问wordpress的正常页面、分类、文章时,都正常访问,正常显示,而当你访问一个不存在的url时,你的站点不会显示到404页面,而是显示的首页; 可能大家听起来会很模糊,没明白过来是啥意思; 例如:…

wordpress顶部工具条如何隐藏去除

2021-04-19

很显然,让用户看到wordpress顶部工具条(admin bar)显得有点凌乱,而完全隐藏去除对于管理上又不是很方便,那么下面整理了一系列的隐藏去除的方法,酌情使用。 完全去除wordpress工具条 show_adm…

修改WordPress搜索结果的链接样式

2021-02-06

WordPress默认的搜索结果的链接样式是?s=关键词动态的结构,不美观,也不利于搜索引擎优化;有没有办法改变它的链接结构呢?当然可以;直接在主题文件夹里找到functions.php文件,并将以下代码贴入; //修改…

WordPress的head头信息X-Pingback的隐藏

2021-02-02

首先,最直接的操作就是,在wordpress主题的functions.php文件中,添加如下代码即可完成对head头部信息中的x-pingback值做了隐藏; //关闭 pingback function deel_se…

WordPress 屏蔽恶意搜索如关键词、网址等

2021-01-26

如果你的站点被恶意的关键词搜索,如果没有屏蔽的话,这些搜索结果很有可能被搜索引擎抓取到。那结果就很悲剧了。 今天这篇文章就来说说如何规避这种问题出现,当然,如果机器人搜索,你还需要设置下搜索频率。 1、添加代码 添加如下…