0

私はまだPHPにかなり慣れていないので、これについて他にどこに助けを求めるべきかわかりませんでした。

私が作成しようとしている関数は関数としては機能しませんが、関数に変換すると機能しなくなります。この関数を引数付きのページで数回使用する予定です。

理想的な機能は、すべてのカスタム投稿用語を配列に収集し、配列を並べ替えてから、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();
?>
4

2 に答える 2

3

手始めに、パラメータに値を指定していません$termName。デフォルト値もないため、機能しません。

それとは別に、スコープ外から変数を参照しているように見えます$post->ID。関数は、次の場合にのみ外部から変数にアクセスできます。

  1. それらはパラメータとして渡されます
  2. useこれは、句($var = function($param) use ($outsidevar) {...})、ORを持つ無名関数です
  3. 関数内に入れglobal $outsidevarて「インポート」します。

(4.も使えますが、建物が高い$GLOBALS['outsidevar']のでお勧めできません)$GLOBALS

上記の問題に対処すると、関数は機能するはずですが、現時点では関数のための関数のように見えます。あなたがコードで書くすべてのものはそれに理由がなければなりません、できればあなたが実際にそれをする前に簡単なコメントで書かれているものが望ましいです。

于 2013-02-27T17:47:19.603 に答える
2

関数に引数を指定せず、次を呼び出すだけです。

postTerms();

あなたがする必要があります:

postTerms($argument);
于 2013-02-27T17:47:13.333 に答える