WordPress短代码的使用非常简单。比如说我们想显示给定的最新文章,我们可以使用类似下面的代码:

1

[

recent

-

posts

]

再进一步的,我们可以通过设定一个参数来控制现实的文章的数量:

1

[

recent

-

posts

posts

=

"5"

]

更进一步的,我们可以为文章列表增加一个标题:

1

[

recent

-

posts

posts

=

"5"

]

Posts

Heading

[

/

recent

-

posts

]

1. 简单的短代码

本教程的第一部分,我们将创建下面这个短代码的代码:

1

[

recent

-

posts

]

创建的过程非常简单,不需要很高级的PHP知识。创建过程如下:

创建一个函数,当 WordPress 发现短代码的时候会调用此函数;

通过设置一个唯一的名称来注册短代码;

把注册的函数绑定到Wordpress的action上。

本教程的所有代码都可以直接放到 functions.php 中,也可以放在一个将包含在 functions.php 的单独的PHP文件中。

1.1 创建回调函数

当发现短代码的时候,它会被一个称作回调函数的一段代码所代替。所以我们先创建一个函数,从数据库中获取最新的文章。

1

2

3

4

5

6

7

8

9

10

function

recent_posts_function

(

)

{

query_posts

(

array

(

'orderby'

=

>

'date'

,

'order'

=

>

'DESC'

,

'showposts'

=

>

1

)

)

;

if

(

have_posts

(

)

)

:

while

(

have_posts

(

)

)

:

the_post

(

)

;

$return_string

=

''

.

get_the_title

(

)

.

''

;

endwhile

;

endif

;

wp_reset_query

(

)

;

return

$return_string

;

}

如上所示,我们查询数据库,获取最新的文章,并返回一个带有链接的字符串。值得注意的是,回调函数并不打印任何内容,而是返回一个字符串。

1.2 注册短代码

现在,我们告诉Wordpress这个函数是一个短代码:

1

2

3

function

register_shortcodes

(

)

{

add_shortcode

(

'recent-posts'

,

'recent_posts_function'

)

;

}

当在文章的内容中发现短代码 [recent-posts] 时,将会自动调用 recent_posts_function() 函数,我们需要确保短代码的名字是唯一的,以避免重复。

1.3 Hook into WordPress

为了能够执行 recent_posts_function() 函数,我们需要把它绑定在 WordPress 的初始化钩子中。

1

add_action

(

'init'

,

'register_shortcodes'

)

;

1.4 测试短代码

简单的短代码已经准备好了,现在我们需要测试它是否能够正常运行。我们创建一个新的文章(或打开一个已存在的),把下面的代码加入到文章内容中的某个位置:

1

[

recent

-

posts

]

发布文章并在浏览器中打开,你将看到一个执行你最新文章的链接,如下图所示:

2. 进阶短代码

2.1 短代码参数

短代码非常灵活,因为它允许我们添加参数以使它们具有更多的功能。假定我们需要显示一定数量的最新文章。为了实现这个,我们需要给短代码增加额外的选择来指定显示最新的多少篇文章。

我们需要使用两个函数,第一个是Wordpress内置的 shortcode_atts() 函数,它把用户的短代码属性与本地属性结合在一起,并填充到所需要的位置。第二个是PHP的 extract() 函数,顾名思义,它提取短代码的各个属性。

扩展我们的回调函数,我们添加一个参数,它是一个数组,从中我们可以提取到我们需要获取的文章的数量。我们查询数据库,获取指定数量的文章,并返回一个列表:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

function

recent_posts_function

(

$atts

)

{

extract

(

shortcode_atts

(

array

(

'posts'

=

>

1

,

)

,

$atts

)

)

;

$return_string

=

'

  • '

;

query_posts

(

array

(

'orderby'

=

>

'date'

,

'order'

=

>

'DESC'

,

'showposts'

=

>

$posts

)

)

;

if

(

have_posts

(

)

)

:

while

(

have_posts

(

)

)

:

the_post

(

)

;

$return_string

.

=

'

'

.

get_the_title

(

)

.

'

'

;

endwhile

;

endif

;

$return_string

.

=

'

'

;

wp_reset_query

(

)

;

return

$return_string

;

}

如果用户不指定该选项,1将是默认值。我们可以添加更多的属性,使短代码接受更多的参数。用这个增强的函数,我们可以指定调用最新文章的数量:

1

[

recent

-

posts

posts

=

"5"

]

在浏览器中显示时,你将看到最新的五篇文章列表:

2.2 短代码中添加内容

我们可以更进一步扩展我们的短代码,添加一些内容作为参数来传递,这将是最新文章列表的标题。为了实现此功能,我们需要在回调函数中增加第二个参数 $content ,并把它显示在列表前面的一个

标签中。新的函数如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

function

recent_posts_function

(

$atts

,

$content

=

null

)

{

extract

(

shortcode_atts

(

array

(

'posts'

=

>

1

,

)

,

$atts

)

)

;

$return_string

=

'

'

.

$content

.

''

;

$return_string

.

=

'

  • '

;

query_posts

(

array

(

'orderby'

=

>

'date'

,

'order'

=

>

'DESC'

,

'showposts'

=

>

$posts

)

)

;

if

(

have_posts

(

)

)

:

while

(

have_posts

(

)

)

:

the_post

(

)

;

$return_string

.

=

'

'

.

get_the_title

(

)

.

'

'

;

endwhile

;

endif

;

$return_string

.

=

'

'

;

wp_reset_query

(

)

;

return

$return_string

;

}

这种短代码类似于一个HTML标签:

1

[

recent

-

posts

posts

=

"5"

]

This

is

the

list

heading

[

/

recent

-

posts

]

除了文章列表多了一个标题,其余的内容和上一个示例是一样的:

3. 在任何地方显示短代码

3.1 在侧边栏小工具中使用短代码

默认情况下,侧边栏小工具是忽略短代码的,实例如下:

1

[

recent

-

posts

posts

=

"5"

]

如果你把这段代码放在小工具里的时候,你将看到类似下面的结果

我们可以通过一行代码来启用这个函数,为了使侧边栏小工具支持短代码,添加如下的代码:

1

add_filter

(

'widget_text'

,

'do_shortcode'

)

;

现在不需要修改其他任何地方,刷新一下页面看看,侧边栏将会正确的显示:

同样的,在评论中启用短代码:

1

add_filter

(

'comment_text'

,

'do_shortcode'

)

;

在摘要中启用短代码:

1

add_filter

(

'the_excerpt'

,

'do_shortcode'

)

;

4. TinyMCE编辑器增加短代码按钮

虽然短代码可以方便的为文章添加动态内容,但是这对于普通用户来说可能还是有点复杂,尤其是当参数比较多的时候。大多数用户对于类HTML代码并不熟悉,然而要使用短代码,他们必须记住具体的语法与参数,因为即使是一个小小的语法错误,都可能导致意想不到的结果。

要解决这个,我们可以给 TinyMCE编辑器增加一个按钮,使用户可以通过简单的单击来增加短代码。创建这个按钮仅需两个步骤:

为这个按钮创建一个JS文件

注册按钮与JS文件

4.1 通过JS文件创建按钮

JS文件是通过 TinyMCE API 来注册 TinyMCE 插件的。我们在主题的 js 文件夹下创建 recent-posts.js ,并贴进去下面的代码(需要把图片文件也放在这里):

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

(

function

(

)

{

tinymce

.

create

(

'tinymce.plugins.recentposts'

,

{

init

:

function

(

ed

,

url

)

{

ed

.

addButton

(

'recentposts'

,

{

title

:

'Recent posts'

,

image

:

url

+

'/recentpostsbutton.png'

,

onclick

:

function

(

)

{

var

posts

=

prompt

(

"调用文章数量"

,

"1"

)

;

var

text

=

prompt

(

"列表标题"

,

"这里是文章列表标题"

)

;

if

(

text

!=

null

&&

text

!=

''

)

{

if

(

posts

!=

null

&&

posts

!=

''

)

ed

.

execCommand

(

'mceInsertContent'

,

false

,

'[recent-posts posts="'

+

posts

+

'"]'

+

text

+

'[/recent-posts]'

)

;

else

ed

.

execCommand

(

'mceInsertContent'

,

false

,

'[recent-posts]'

+

text

+

'[/recent-posts]'

)

;

}

else

{

if

(

posts

!=

null

&&

posts

!=

''

)

ed

.

execCommand

(

'mceInsertContent'

,

false

,

'[recent-posts posts="'

+

posts

+

'"]'

)

;

else

ed

.

execCommand

(

'mceInsertContent'

,

false

,

'[recent-posts]'

)

;

}

}

}

)

;

}

,

createControl

:

function

(

n

,

cm

)

{

return

null

;

}

,

getInfo

:

function

(

)

{

return

{

longname

:

"Recent Posts"

,

author

:

'Specs'

,

authorurl

:

'http://9iphp.com'

,

infourl

:

'http://9iphp.com/opensystem/wordpress/1094.html'

,

version

:

"1.0"

}

;

}

}

)

;

tinymce

.

PluginManager

.

add

(

'recentposts'

,

tinymce

.

plugins

.

recentposts

)

;

}

)

(

)

;

如下图所示,我们通过调用 tinymce.create() 创建了一个插件。代码中最重要的是 init() 函数,我们定义了一个名字,一个图标文件及 onclick() 事件处理程序。

在 onclick() 函数的前两行,弹出两个对话框让用户输入调用文章数量及列表标题两个参数,然后根据用户输入,把生成的短代码插入到编辑器中。

最后,TinyMCE插件通过 add() 函数添加到 PluginManager。现在我们已经成功的整合了 [recent-posts] 短代码到Wordpress中。

4.2 注册按钮及TinyMCE插件

创建完 JS 文件后,我们现在需要注册它和短代码按钮。所以我们创建两个函数并把它们绑定到合适的Wordpress过滤器中。

第一个叫做 register_button() 的函数把短代码添加到按钮数组中,在现有按钮和新按钮之间添加分割线。

1

2

3

4

function

register_button

(

$buttons

)

{

array_push

(

$buttons

,

"|"

,

"recentposts"

)

;

return

$buttons

;

}

第二个函数 add_plugin() 指出JS文件的路径及文件名。

1

2

3

4

function

add_plugin

(

$plugin_array

)

{

$plugin_array

[

'recentposts'

]

=

get_template_directory_uri

(

)

.

'/js/recent-posts.js'

;

return

$plugin_array

;

}

下一步是添加包含前面两个函数的过滤器。register_button() 函数绑定到 mce_buttons 过滤器,这个会在编辑器加载插件的时候执行; add_plugin() 函数绑定到 mce_external_plugins 过滤器,当加载按钮的时候执行。

1

2

3

4

5

6

7

8

9

10

11

12

function

my_recent_posts_button

(

)

{

if

(

!

current_user_can

(

'edit_posts'

)

&&

!

current_user_can

(

'edit_pages'

)

)

{

return

;

}

if

(

get_user_option

(

'rich_editing'

)

==

'true'

)

{

add_filter

(

'mce_external_plugins'

,

'add_plugin'

)

;

add_filter

(

'mce_buttons'

,

'register_button'

)

;

}

}

当用户没有对文章在可视化编辑器中编辑的权限时,前面的函数不会执行。

最后把函数勾到Wordpress初始化函数

1

add_action

(

'init'

,

'my_recent_posts_button'

)

;

4.3 按钮用法

为了检测代码是否正确,我们打开一篇新的文章,这时一个我们刚刚定义的按钮是不是已经出现在第一行的末尾了?如下图所示:

点击按钮的时候,会弹出对话框让我们输入调用文章的数量:

输入完点击确定后,会弹出第二个对话框,让我们输入列表的标题:

参数留空的话,不会出现在最后的代码中。最后,短代码会添加到编辑器中:

php最短的代码实现爱情,WordPress Shortcode(短代码):完全指南相关推荐

  1. WordPress Shortcode(短代码):完全指南

    为什么80%的码农都做不了架构师?>>>    WordPress短代码的使用非常简单.比如说我们想显示给定的最新文章,我们可以使用类似下面的代码: 1 [ recent - pos ...

  2. wordpress短代码转php,WordPress中的shortcode短代码功能使用详解

    WordPress 从 2.5 的版本开始,增加了一个 shortcode (短代码) API ,类似于 BBS 上的 BBCode , shortcode 也可以很方便的为文章或页面增加功能,并且 ...

  3. 短代码 html,WordPress的短代码问题嵌入HTML格式

    我为我的网站创建了一个自定义的html表单.如果我把所有的代码放在Wordpress页面中,一切正常.问题是,当我尝试用短代码嵌入它时.最终的结果是不同的,因为标签和选择的项目在线显示.在附上屏幕截图 ...

  4. php插入音乐代码,如何修改Wordpress博客代码在文章中插入音乐 | 垃圾站

    垃圾站博客昨天在网上看到有一篇通过修改Wordpress博客代码在文章中插入音乐的教程,特此整理编辑后分享给大家,教程如下: 1.下载swf播放器(点击下载:player.swf )上传到Wordpr ...

  5. 如何制作wordpress短代码

    如何制作WordPress短代码 大家好,这是我的第一次在CSDN发布博客,我是个新手,今天我写的是如何制作wordpress短代码,第一次献丑,请多多指教. A.   短代码和普通 HTML的编写形 ...

  6. WordPress Shortcode(简码)介绍及使用详解

    WordPress 从 2.5 版本开始增加了一个类似 BBCode 标签的 Shortcode API,可以使用它在日志的内容中来给日志内容添加各种功能.Shortcode 这个接口非常容易使用,并 ...

  7. wordpress代码插件_您可能想尝试的20个WordPress短代码和插件

    如果您不熟悉简码,则简码是WordPress特定的代码,可让您使用脚本和代码来进行创造性的工作. 由于您不必在长篇文章中填充冗长的丑陋代码,因此它们仅会压缩为一行代码,即短代码. 简而言之, 简码基本 ...

  8. c语言我爱你二进制,二憨的爱情c语言表白代码我爱你·爱如流离.DOC

    [摘要]二憨的爱情.c语言表白代码我爱你 ·爱如流离 HYPERLINK 二憨的爱情.c语言表白代码我爱你 ·爱如流离 那些或喜或悲的情节慢慢的在我脑中烟消云散. 她从不后 于是,流离. 选择了我,j ...

  9. 压缩html页面 seo,WordPress前端html代码压缩优化方法

    为了优化网站的访问速度,对网页进行压缩是非常不错的一条方法.压缩页面减少了页面的体积提升了访问速度. 部署功能代码 //压缩html代码 function wp_compress_html(){ fu ...

最新文章

  1. ajax怎样获得表头信息,layui.table动态获取表头和列表数据示例
  2. 个人博客多说评论系统的使用
  3. 为什么刹车热了会失灵_网曝比亚迪汉“刹车失灵”,比亚迪称:是IPB模块仪表显示问题...
  4. Acey.ExcelX4.2版本发布
  5. java很贵可以用before代替吗_Java内存模型与Volatile,Happen-Before原则等
  6. jbod ugood 磁盘驱动状态_NTFS磁盘读写工具Mounty免费版
  7. Java 基础 —— enum
  8. OpenCV之图像平滑处理
  9. iptables实战系列:通过NAT转发实现私网对外发布信息
  10. 台达服务器AB和B2系列区别,台达伺服各系列区别
  11. 计算机网络最早出现在哪个年代
  12. 性早熟和微生物群:性激素-肠道菌群轴的作用
  13. mashang6.edu.cn
  14. Simulink文件命名问题
  15. 网络舆情系统的四大要素-张华平博士
  16. layui表格 设置默认排序_改造 layui 表格组件实现多重排序
  17. 知识图谱从入门到应用——知识图谱推理:基于表示学习的知识图谱推理-[嵌入学习]
  18. 指南Java面试常问问题及答案
  19. 笔记本安装CentOS7.2操作系统
  20. RVMedia组件Crack,IP 摄像机接收视频

热门文章

  1. 从以巴冲突看项目管理在现代战争中的运用
  2. 回顾几个常见的XSS漏洞测试脚本
  3. Qt使用Qt Designer进行界面设计
  4. maven 无法引入net.sf.json的解决方法
  5. 《Effective Java》阅读笔记7 避免使用终结方法
  6. h5无插件 RTSP 摄像头在线播放(用海康摄像头测试)
  7. navicat for mysql优点_Navicat for SQL Server 有什么优势
  8. Tomcat卸载重装及为eclipse配置tomcat,一文搞定。
  9. [附源码]JAVA+ssm化妆品销售购物系统(程序+Lw)
  10. 华东师范大学2018.11月赛【EOJ Monthly 2018.11】