Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
第一次在Wordpress中创建PHP函数_Php_Wordpress - Fatal编程技术网

第一次在Wordpress中创建PHP函数

第一次在Wordpress中创建PHP函数,php,wordpress,Php,Wordpress,我对PHP还是相当陌生,不知道在这方面还可以向其他地方寻求帮助 我试图创建的函数不是函数,但一旦我将其转换为函数,它就会中断。我计划在带有参数的页面上多次使用此函数 理想的功能是将所有自定义post术语收集到一个数组中,对数组进行排序,然后回显HTML代码 谢谢你能提供的任何帮助 <?php function postTerms($termName) { $postTermsArray = array(); rewind_posts(); while (have_posts

我对PHP还是相当陌生,不知道在这方面还可以向其他地方寻求帮助

我试图创建的函数不是函数,但一旦我将其转换为函数,它就会中断。我计划在带有参数的页面上多次使用此函数

理想的功能是将所有自定义post术语收集到一个数组中,对数组进行排序,然后回显HTML代码

谢谢你能提供的任何帮助

<?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
    放入函数中以“导入”它
  • (另外4.您可以使用
    $GLOBALS['outsidevar']
    ,但不推荐使用,因为构建
    $GLOBALS
    非常昂贵)


    解决上述问题,您的函数应该可以工作,尽管目前它看起来像是为了函数而函数。在代码中编写的所有内容都必须有其原因,最好是在实际执行之前以简单注释的形式编写。

    首先,您没有给
    $termName
    参数赋值。因为也没有默认值,所以它不会工作

    除此之外,您似乎正在引用范围之外的变量,例如
    $post->ID
    。函数只能在以下情况下从外部访问变量:

  • 它们作为参数传递
  • 它是一个匿名函数,带有
    use
    子句(
    $var=function($param)use($outsidevar){…}
    ),或者
  • 您将
    global$outsidevar
    放入函数中以“导入”它
  • (另外4.您可以使用
    $GLOBALS['outsidevar']
    ,但不推荐使用,因为构建
    $GLOBALS
    非常昂贵)


    解决上述问题,您的函数应该可以工作,尽管目前它看起来像是为了函数而函数。在代码中编写的每件事都必须有一个原因,最好是在实际执行之前用简单的注释编写的原因。

    关于它“不起作用”怎么办?您到底在哪里定义
    $post
    ?我不相信WP会为您设置这些,所以在函数中它将是一个未定义的变量。它看起来不像是第一次使用的
    函数。它什么都不响应。我认为foreach循环中的某些地方存在问题,因为我可以在foreach循环之外回显信息。@HankyPankyㇱ 我有Javascript和JQuery的背景,但实际上我以前从未编写过PHP函数。关于它“不起作用”怎么办?你到底在哪里定义
    $post
    ?我不相信WP会为您设置这些,所以在函数中它将是一个未定义的变量。它看起来不像是第一次使用的
    函数。它什么都不响应。我认为foreach循环中的某些地方存在问题,因为我可以在foreach循环之外回显信息。@HankyPankyㇱ 我有Javascript和JQuery的背景,但实际上我以前从未编写过PHP函数。哇,我完全忘记了传递外部变量,谢谢。我现在就试试。问题就像你说的,$post->ID无法访问函数外部的变量。再次感谢。哇,我完全忘记了传递外部变量,谢谢。我现在就试试。问题就像你说的,$post->ID无法访问函数外部的变量。再次感谢你。