-2

私はWordpressのテーマを構築しており、カスタム投稿タイプのカスタムフィールドを表示しています。これを何度も書く代わりに:

<?php if(get_post_meta($post->ID, 'custom_item', true)){ echo $post_meta_data['custom_item'][0]; } ?>

このプロセスを短縮する関数を書くことはできませんか? 変数を渡すと、関数にプラグインできるもの。これは私がこれまで運がなかったことです:

<?php 
    function display_meta($custom_meta) {
    if(get_post_meta($post->ID, $custom_meta, true)){ echo $post_meta_data[$custom_meta][0]; }} 
?>

そして、各フィールドに対して次のようなことができるようにしたいと考えています。

<?php echo display_meta('custom_item') ?>

私はまだPHPに比較的慣れていないので、このような関数を書くのはこれが初めてです. どんな助けでも大歓迎です!

4

2 に答える 2

2

$post と $post_meta_data も関数に渡す必要があるようです。

<?php 
function display_meta($custom_meta, $post, $post_meta_data) {
    if(get_post_meta($post->ID, $custom_meta, true)){ 
        echo $post_meta_data[$custom_meta][0]; 
    }
} 
?>

そして、(誤って) エコーを 2 回実行しようとしています。このようなものはうまくいくでしょう

<?php display_meta('custom_item', $post, $post_meta_data) ?>

簡単な php チュートリアルを実行して、関数とスコープについて学習する必要があります。

于 2012-11-15T04:04:29.803 に答える
0

私はあなたがphp5.3で利用可能なクロージャについて話していると思います

$myFunc = function()
{
  return 1;
};

function test($callback)
{
   if(is_callable($callback))
   {
      $callback();
   }
}

test($myFunc);
于 2012-11-15T03:55:53.303 に答える