第一次在Wordpress中创建PHP函数
我对PHP还是相当陌生,不知道在这方面还可以向其他地方寻求帮助 我试图创建的函数不是函数,但一旦我将其转换为函数,它就会中断。我计划在带有参数的页面上多次使用此函数 理想的功能是将所有自定义post术语收集到一个数组中,对数组进行排序,然后回显HTML代码 谢谢你能提供的任何帮助第一次在Wordpress中创建PHP函数,php,wordpress,Php,Wordpress,我对PHP还是相当陌生,不知道在这方面还可以向其他地方寻求帮助 我试图创建的函数不是函数,但一旦我将其转换为函数,它就会中断。我计划在带有参数的页面上多次使用此函数 理想的功能是将所有自定义post术语收集到一个数组中,对数组进行排序,然后回显HTML代码 谢谢你能提供的任何帮助 <?php function postTerms($termName) { $postTermsArray = array(); rewind_posts(); while (have_posts
<?php
function postTerms($termName)
{
$postTermsArray = array();
rewind_posts(); while (have_posts()) : the_post();
$postTerms = wp_get_post_terms($post->ID, $termName, array("fields" => "names"));
$postTermsArray = array_merge($postTermsArray, $postTerms);
$postTermsArray = array_unique($postTermsArray);
endwhile;
sort($postTermsArray);
foreach($postTermsArray as $postTerms) {
if ($postTerms !=''){
$postTermsLower = strtolower($postTerms);
$postTermsLower = preg_replace('/[^a-zA-Z0-9_ %\[\]\.\%&-]/s', '', $postTermsLower);
$postTermsLower = preg_replace("![^a-z0-9]+!i", "-", $postTermsLower);
echo ('<li><a href="#filter-'.$postTermsLower.'" data-filter-value=".'.$postTermsLower.'">'.$postTerms.'</a></li>');
}
}
}
postTerms();
?>
您不需要为函数提供参数,只需调用:
postTerms();
您需要执行以下操作:
postTerms($argument);
您不向函数提供参数,只调用:
postTerms();
您需要执行以下操作:
postTerms($argument);
首先,您没有给
$termName
参数赋值。因为也没有默认值,所以它不会工作
除此之外,您似乎正在引用范围之外的变量,例如$post->ID
。函数只能在以下情况下从外部访问变量:
use
子句($var=function($param)use($outsidevar){…}
),或者global$outsidevar
放入函数中以“导入”它$GLOBALS['outsidevar']
,但不推荐使用,因为构建$GLOBALS
非常昂贵)
解决上述问题,您的函数应该可以工作,尽管目前它看起来像是为了函数而函数。在代码中编写的所有内容都必须有其原因,最好是在实际执行之前以简单注释的形式编写。首先,您没有给
$termName
参数赋值。因为也没有默认值,所以它不会工作
除此之外,您似乎正在引用范围之外的变量,例如$post->ID
。函数只能在以下情况下从外部访问变量:
use
子句($var=function($param)use($outsidevar){…}
),或者global$outsidevar
放入函数中以“导入”它$GLOBALS['outsidevar']
,但不推荐使用,因为构建$GLOBALS
非常昂贵)
解决上述问题,您的函数应该可以工作,尽管目前它看起来像是为了函数而函数。在代码中编写的每件事都必须有一个原因,最好是在实际执行之前用简单的注释编写的原因。关于它“不起作用”怎么办?您到底在哪里定义
$post
?我不相信WP会为您设置这些,所以在函数中它将是一个未定义的变量。它看起来不像是第一次使用的函数。它什么都不响应。我认为foreach循环中的某些地方存在问题,因为我可以在foreach循环之外回显信息。@HankyPankyㇱ 我有Javascript和JQuery的背景,但实际上我以前从未编写过PHP函数。关于它“不起作用”怎么办?你到底在哪里定义$post
?我不相信WP会为您设置这些,所以在函数中它将是一个未定义的变量。它看起来不像是第一次使用的函数。它什么都不响应。我认为foreach循环中的某些地方存在问题,因为我可以在foreach循环之外回显信息。@HankyPankyㇱ 我有Javascript和JQuery的背景,但实际上我以前从未编写过PHP函数。哇,我完全忘记了传递外部变量,谢谢。我现在就试试。问题就像你说的,$post->ID无法访问函数外部的变量。再次感谢。哇,我完全忘记了传递外部变量,谢谢。我现在就试试。问题就像你说的,$post->ID无法访问函数外部的变量。再次感谢你。