0

カスタムショートコードプラグインを使用しています。プラグインを使用すると、一部の php を実行できます。php は wp 以外のデータベースにクエリを実行して車両仕様のページを作成し、すべてがうまく機能します。問題は、ページのタイトルと説明に必要なすべての情報が、データベースからのデータに含まれていることです。標準の wp php フィルターをいくつか試しましたが、タイトルは変わりません。

これはショートコードの実行タイミングのせいではないでしょうか?

TinyMCE in WP admin. Shortcode
-----------------------------------------------
[myplugin data_id='42']

PHP window in shortcode editor
-----------------------------------------------
$GP=array_merge($_GET, $_POST);

echo "hello word" //works
echo $data_id;  //works
echo $GP[some_post_data]; //works
//connect to database (irrelevant)
echo "the title from data table for data_id 42 = ".$data[title];  //works

// the following has no effect on page title even though $data[title] contains valid data
add_filter('the_title','myCallback'); 
function myCallback($data){ 
  return $data[title]; 
  } 
4

1 に答える 1

0

問題は、$data[title] が範囲外であり、フィルター コールバックが正しく設定されていないことです。また、連想インデックスを引用符でカプセル化する必要があります。

コールバックを既存のフィルタに追加すると、コールバック内の引数がフィルタ定義によって渡されます。ケースとポイント:タイトルのフィルタリング

the_title の標準フィルター内の引数は、$title と $id です。$data 配列からタイトルを返したい場合は、グローバル スコープを使用してずさんな方法で行うことができます。

add_filter('the_title','myCallback'); 
function myCallback($title, $id){
    global $data;
    return $data['title']; 
}

しかし、個人的には、グローバルを完全に避け、カスタム フィルターの利用に専念することを検討します。独自のフックの追加を調べてください。アクション フックのハンドルを取得した後、フィルター フックは非常に簡単に把握できます。

于 2012-09-13T02:38:06.543 に答える