WordPress自定义简码制作写法

2024-02-21 06:48

本文主要是介绍WordPress自定义简码制作写法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

虽然WordPress 2.5已引进了功能强大的简码,但目前仍只有很少人了解它。试想一下:只要输入“adsense”系统就会显示AdSense广告;键入“post_count”就能立即了解博客上的日志数目会是怎样的体验。

而WordPress简码完全可以完成以上功能,而且还拥有更多神奇功能,它将使您的博客体验更加轻松容易。本文将向大家介绍如何创建并使用简码,并提供了杀手级的可直接使用的WordPress简码,这无疑会增强您的博客体验经历。

何为简码?

简码使用起来非常容易,只需创建新日志(或编辑已有日志),切换到HTML模式,然后在方括号中输入简码,如:

[showcase]

当然,也可在简码中包括属性。带有属性值的简码显示如下:

[showcase id="5"]

简码中还可包括内容,如:

[url href="http://www.smashingmagazine.com"]Smashing Magazine[/url]

简码由一个函数集来处理,即通常所说的简码API。博客作者保存文章时,系统会解析内容,简码API就会自动让简码执行系统想要其执行的任务或功能。

创建简单简码

创建简码非常简单。如果你知道如果编写基本的PHP函数,你也就了解了如何创建WordPress简码。我们首先来创建一个众人皆知的“Hello, World”吧。

  1. 打开主题中的functions.php文件。如不存在此文件,请立即创建。
  2. 首先创建会返回“Hello World”字符串的函数,并把其粘贴到functions.php文件中。
    function hello() {
        return 'Hello, World!';
    }
  3. 使用add_shortcode()函数把字符串转化为简码,把以下代码粘贴到hello()函数中,然后保存并关闭functions.php文件:
    add_shortcode('hw', 'hello');
  4. 简码已创建成功,我们可以在日志和页面中使用它了。使用时,只要把编辑器切换到HTML模式并输入以下内容即可:
    [hw]

大功告成!当然,这只是最最基本的简码,但它也足以说明创建简码是多么简单的一件事!

创建高级简码

正如以上所说,简码中可以包含属性,这非常有用,例如,它可以赋予函数参数。接下来,我们将共同了解如何创建可以显示URL的简码,正如使用诸如VBulletin 和PHPBB论坛的用户使用BBCode一样

  1. 打开主题中的functions.php文件。粘贴以下函数到其中:
    function myUrl($atts, $content = null) {
        extract(shortcode_atts(array(
            "href" => 'http://'
        ), $atts));
        return '<a href="'.$href.'">'.$content.'</a>';
    }
  2. 把函数转化成简码:
    add_shortcode("url", "myUrl");
  3. 简码创建成功,现在就可在日志和页面上使用了。
    [url href="http://www.wprecipes.com"]WordPress recipes[/url]

日志保存后,简码会显示名为“WordPress recipes”的链接,并指向http://www.wprecipes.com。

代码注释:若要正常运行,简码必须处理两个参数:$atts 和 $content。$atts是简码属性,上例中,属性为href,且包括了URL链接。$content是简码内容,位于域名和子目录之间(即www.example.com和“/subdirectory”之间)。正如以上显示,我们给$atts 和 $content都设置了默认值。

既然已经知道如何创建和使用简码,接下来我们就继续了解杀手级的可立即使用的简码吧。

1.创建“发送到 Twitter”的简码

问题:许多人似乎都比较喜欢我的十个杀手级Hack技巧中所介绍的“发送到Twitter”技巧,包括我本人也非常喜欢,但它有一个缺陷:如果把代码粘贴到single.php文件中,“发送到Twitter”链接将出现中所有的日志中,这可能并不是大家想要的结果。若能控制这个技巧,使链接只出现在我们想要其出现的日志中将十分有用。不用着急,方法十分简单:

解决方案:将要使用的简码十分容易创建,只要把“发送到Twitter”hack中的代码转化成PHP函数即可。复制以下代码到functions.php文件中:

function twitt() {
  return '<div id="twitit"><a href="http://twitter.com/home?status=Currently reading '.get_permalink($post->ID).'" title="Click to send this page to Twitter!" target="_blank">Share on Twitter</a></div>';
}
add_shortcode('twitter', 'twitt');

使用此简码,只需把编辑器切换到HTML模式,输入:

[twitter]

然后,“发送到Twitter”链接就会只出现放置简码的位置。

2.创建“RSS订阅”简码

问题:我们已经知道获取RSS订阅的一个较好途径就是在首页放置一个精致漂亮的“RSS feed订阅”图示。但是,我们其实并不想在主题中使用硬码,这样我们对显示内容就失去了控制权。为此,我们在此将创建“RSS订阅”简码,这样你就可在任意位置显示订阅图示了。

解决方案:同样,我们需要创建函数并把其转换成简码,然后把其放到functions.php文件中。记得把示例中的feed URL换成自己的URL!

function subscribeRss() {
    return '<div class="rss-box"><a href="http://feeds.feedburner.com/wprecipes">Enjoyed this post? Subscribe to my RSS feeds!</a></div>';
}
add_shortcode('subscribe', 'subscribeRss');

设计显示框:你或许注意到了div元素中含有rss-box类,它是为了让你能够定制显示框的样式。以下是“RSS订阅”显示框可应用的CSS样式,把其复制到style.css文件中即可:

.rss-box{
  background:#F2F8F2;
  border:2px #D5E9D5 solid;
  font-weight:bold;
  padding:10px;
}

3.定制Google AdSense位置

问题:许多博主都在使用Google AdSense,在主题文件如sidebar.php 添加AdSense编码非常容易,但有经验的网络营销师都明白访客点击最多的还是嵌入在文章内部的广告。

解决方案:若在日志或页面中嵌入AdSense广告,需创建以下简码:

  1. 打开functions.php文件并复制以下代码。记得把JavaScript代码换成自己的AdSense代码。
    function showads() {
        return '<div id="adsense"><script type="text/javascript"><!–
        google_ad_client = "pub-XXXXXXXXXXXXXX";
        google_ad_slot = "4668915978";
        google_ad_width = 468;
        google_ad_height = 60;
        //–>
    </script>
    <script type="text/javascript"
    src="http://88.198.60.17/images/mastering-wordpress-shortcodes/http://pagead2.googlesyndication.com/pagead/show_ads.js">
    </script></div>';
    }
    add_shortcode('adsense', 'showads');
  2. 保存functions.php文件后,可使用以下简码在日志和页面定制AdSense显示位置:
    [adsense]

注意AdSense代码被adsense div元素包装,这样我们就可以在style.css文件中设计其样式。

代码注释:以上代码用来显示AdSense广告。当把简码插入日志中时,它就会返回AdSense广告。这一切都非常简单,同时也节省了大量时间。

4.嵌入RSS阅读器

问题:许多读者似乎也非常喜欢我之前在Smashing杂志发布的8 RSS Hacks for WordPress”。现在,就让我们一起运用对RSS和简码的了解来在日志和页面中嵌入RSS阅读器。

解决方案:与以上类似,把以下代码复制到主题中的function.php文件中:

//This file is needed to be able to use the wp_rss() function.
include_once(ABSPATH.WPINC.'/rss.php');
function readRss($atts) {
    extract(shortcode_atts(array(
    "feed" => 'http://',
      "num" => '1',
    ), $atts));

    return wp_rss($feed, $num);
}
add_shortcode('rss', 'readRss');

为了使用简码,输入:

[rss feed="http://feeds.feedburner.com/wprecipes" num="5"]

feed属性(attribute)即是要嵌入的feed URL,num即是要显示的条目数量。

5.使用简码从WordPress数据库中提取文章

问题:幻想过直接从WordPress编辑器中调用一系列相关文章吗?当然,“相关文章”插件可以为我们检索文章,但是使用简码我们就可从特定类别中轻松获取任何数量的文章。

解决方案:把以下代码复制到functions.php文件中:

function sc_liste($atts, $content = null) {
        extract(shortcode_atts(array(
                "num" => '5',
                "cat" => ''
        ), $atts));
        global $post;
        $myposts = get_posts('numberposts='.$num.'&order=DESC&orderby=post_date&category='.$cat);
        $retour='<ul>';
        foreach($myposts as $post) :
                setup_postdata($post);
             $retour.='<li><a href="'.get_permalink().'">'.the_title("","",false).'</a></li>';
        endforeach;
        $retour.='</ul> ';
        return $retour;
}
add_shortcode("list", "sc_liste");

然后,在切换到HTML模式后,复制以下内容到WordPress编辑器中:

[list num="3" cat="1"]

接着系统将从ID为1的类别中提取3篇文章。关于如何获取特定类别的ID,可参考这里。

代码注释:系统提取参数并创建全局变量$posts后,sc_liste()函数使用了get_posts(),numberposts, order, orderby和category参数以从类别Y中获取X篇最新日志。完成后,系统就会以无序的HTML列表形式显示日志。

6.获取日志中的最新图像

问题:WordPress可以很容易的操纵图像。但是如何使其更加简单呢?使用稍微复杂一点的简码就可自动获取日志中的最新图像了。

解决方案:打开functions.php文件,并把以下代码复制其中:

function sc_postimage($atts, $content = null) {
    extract(shortcode_atts(array(
        "size" => 'thumbnail',
        "float" => 'none'
    ), $atts));
    $images =& get_children( 'post_type=attachment&post_mime_type=image&post_parent=' . get_the_id() );
    foreach( $images as $imageID => $imagePost )
    $fullimage = wp_get_attachment_image($imageID, $size, false);
    $imagedata = wp_get_attachment_image_src($imageID, $size, false);
    $width = ($imagedata[1]+2);
    $height = ($imagedata[2]+2);
    return '<div class="postimage" style="width: '.$width.'px; height: '.$height.'px; float: '.$float.';">'.$fullimage.'</div>';
}
add_shortcode("postimage", "sc_postimage");

接着,在切换到HTML模式后,复制以下内容到WordPress编辑器中:

[postimage size="" float="left"]

代码注释:sc_postimage()函数首先提取了简码属性,然后它使用get_children(), wp_get_attachment_image() 和wp_get_attachment_image_src()这些WordPress函数检索图像。完成后,系统就会返回图像并插入到文章内容中。

7.在侧边栏微件中添加简码

问题:即使大家非常喜欢此文,如果本文到此停止,大家也难免有点泄气,因为它还未解决WordPress默认情况下不允许在侧边栏微件中使用简码这一难题。可喜的是,接下来就将介绍一些小技巧以提升WordPress性能并在侧边栏微件中使用简码。

解决方案:打开functions.php文件,并把以下代码复制其中:

add_filter('widget_text', 'do_shortcode');

大功告成!

代码注释:这次操作非常简单:在widget_text()函数中添加一个过滤器以执行do_shortcode()功能,它会使用API执行简码。这样,在侧边栏微件中就可使用简码了。

这篇关于WordPress自定义简码制作写法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/730889

相关文章

使用Sentinel自定义返回和实现区分来源方式

《使用Sentinel自定义返回和实现区分来源方式》:本文主要介绍使用Sentinel自定义返回和实现区分来源方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Sentinel自定义返回和实现区分来源1. 自定义错误返回2. 实现区分来源总结Sentinel自定

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Android自定义Scrollbar的两种实现方式

《Android自定义Scrollbar的两种实现方式》本文介绍两种实现自定义滚动条的方法,分别通过ItemDecoration方案和独立View方案实现滚动条定制化,文章通过代码示例讲解的非常详细,... 目录方案一:ItemDecoration实现(推荐用于RecyclerView)实现原理完整代码实现

基于Spring实现自定义错误信息返回详解

《基于Spring实现自定义错误信息返回详解》这篇文章主要为大家详细介绍了如何基于Spring实现自定义错误信息返回效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录背景目标实现产出背景Spring 提供了 @RestConChina编程trollerAdvice 用来实现 HTT

SpringSecurity 认证、注销、权限控制功能(注销、记住密码、自定义登入页)

《SpringSecurity认证、注销、权限控制功能(注销、记住密码、自定义登入页)》SpringSecurity是一个强大的Java框架,用于保护应用程序的安全性,它提供了一套全面的安全解决方案... 目录简介认识Spring Security“认证”(Authentication)“授权” (Auth

SpringBoot自定义注解如何解决公共字段填充问题

《SpringBoot自定义注解如何解决公共字段填充问题》本文介绍了在系统开发中,如何使用AOP切面编程实现公共字段自动填充的功能,从而简化代码,通过自定义注解和切面类,可以统一处理创建时间和修改时间... 目录1.1 问题分析1.2 实现思路1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3

dubbo3 filter(过滤器)如何自定义过滤器

《dubbo3filter(过滤器)如何自定义过滤器》dubbo3filter(过滤器)类似于javaweb中的filter和springmvc中的intercaptor,用于在请求发送前或到达前进... 目录dubbo3 filter(过滤器)简介dubbo 过滤器运行时机自定义 filter第一种 @A

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

Python实现阶乘的四种写法

《Python实现阶乘的四种写法》本文主要介绍了Python实现阶乘的六种写法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录第一种:推导式+循环遍历列表内每个元素相乘第二种:调用functools模块reduce的php累计

MySQL中删除重复数据SQL的三种写法

《MySQL中删除重复数据SQL的三种写法》:本文主要介绍MySQL中删除重复数据SQL的三种写法,文中通过代码示例讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录方法一:使用 left join + 子查询删除重复数据(推荐)方法二:创建临时表(需分多步执行,逻辑清晰,但会