热搜:NVER node 开发 php

不太懂php,问一个关于wordpress的问题

2024-09-13 22:15:01
不太懂php,问一个关于wordpress的问题

<?php wp_list_cats('sort_column=name&optioncount=1&hierarchical=0'); ?>
这句代码报错的 

页面上报错:
Fatal error: Call to undefined function wp_list_cats() in D:\phpnow\htdocs\mulan\wp-content\themes\muse\blog.php on line 48
意思好象是wp_list_pages()函数未定义。

想要自己用html css javascript写模板
index.php链接到blog.php时,在blog.php中调用就报错了 
但是如果直接在index.php中调用就很正常,index.php和blog.php在同一个目录下,不明白是为什么。


回复讨论(解决方案)

index.php
有引入那个函数
而blog.php没有

你把index.php里面的一些require也加到blog.php试试

index.php
有引入那个函数
而blog.php没有

你把index.php里面的一些require也加到blog.php试试

好像没有引入什么的 
PHP怎么引入函数啊 
而且 wordpress中的wp_list_cats函数在什么地方 ? 

总之,有人家的东西,就得守人家的规矩

总之,有人家的东西,就得守人家的规矩

可是应该怎么做? 

解决了 
在要调用函数的文件的前面加上<?php require('D:/phpnow/htdocs/mulan/wp-blog-header.php');?> 或者<?php require_once('D:/phpnow/htdocs/mulan/wp-blog-header.php');?> 
路径由自己定 不过我有几个疑问 

1. require 和 require_once 有什么区别 都是调用函数的 语法也是一样的 使用起来页面上没有看出区别。
2. php中怎么获得上一级目录,用绝对路径不是很理想,../ 好像不对哦
3. 调用wp_list_cats()函数以后,会出现 “页面”??“实例页面”这样的链接,怎么去掉
4. wp_list_cats()函数的源代码在哪里?

require_once就是php的引用啊

好比c的include

http://www.csharpwin.com/dotnetspace/5716r9253.shtml  lz可以看看这个   require_once() 函数会先检查目标档案的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。 

嘿 .. 谢谢大家 .. 明白的差不多了 .. 
php怎么获得上一级目录啊,比如要在D:/phpnow/htdocs/mulan/wp-content/themes/my/index.php文件中表示D:/phpnow/htdocs/mulan/wp-blog-header.php文件

../写是可以的,只不过这个相对路径是根据你当前运行的脚本的相对路径。如果你确认要引用的文件在上一层目录,那么很可能实际执行的那个页面不是你预期的那个。

举个例子:

目录结构:
test/1/a.php
test/2/b.php
test/2/c.php


a.php
-----------
require '../2/c.php';


b.php
-----------
echo $a;


c.php
-----------
$a = 123;


运行http://localhost/b.php

你可能会认为没错,因为c.php相对于a.php来说确实是../2/c.php这样的路径。不过很可惜,你实际执行的是b.php,那么当前脚本的目录和c.php处于相同目录。所以a.php中要引用c.php应该写为:
./c.php或c.php

这就是相对路径的坏处,当有文件相互引用时,相对路径会让逻辑看起来一塌糊涂。所以实际中我们都喜欢用相对路径。但直接写磁盘物理路径也不好,等你项目迁移了,那物理路径也许会变。

最好的写法是基于web根目录的绝对路径。
也就是以/开头,这个/就是你的网站根目录,然后向下写绝对路径。
或者用realpath和dirname来动态返回物理路径再拼凑出绝对路径。

上面有句话错了:

所以实际中我们都喜欢用绝对路径。或者用realpath、dirname等等动态获取相对路径。


关于require 和 require_once 有什么区别,具体区别你可以自己搜一下,到处都是说这个的,我就不阐述了。不过要告诉你的是实际项目中最好用require和include,不要用带once的那个,带once的只是让php本身避免一些重复包含的错误,但这会大大降低效率。而这些问题如果程序猿本身素质够高的话都是可以避免的,没必要让php降低性能去做这件事。

至于3、4两个问题,都属于wordpress系统本身的问题,严格来讲不属于php的范畴,你去他们官方论坛求助会比在这里问效果好很多。