2011-02-07 9 views
0

ユーザーが入力したカスタムフィールドに基づいて、自分のタイプの投稿のタイトルを作成したいと思います。例えば、私はフィールド 'ファーストネーム'と 'ラストネーム'を持っていて、ユーザーが入力したものからタイトルを作成し、パーマリンクもそれからスラッグを作成します。私は私がのfunctions.phpでカスタムタイプを宣言の末尾にこれを試してみたカスタム投稿タイプフィールドからページタイトルを作成する

:私は上記のコードの最後の4行を追加する場合

function save_member(){ 
global $post; 
update_post_meta($post->ID, "fname", $_POST["fname"]); 
update_post_meta($post->ID, "lname", $_POST["lname"]); 
$this_post = array(); 
$this_post['ID'] = $post->ID; 
$this_post['post_title'] = $_POST["fname"].' '.$_POST["lname"]; 
wp_update_post($this_post); 
} 

それだけでハングアップします。

答えて

0

ここでdo_action()コール(または関連する関数呼び出し)を起動してwp_update_postを呼び出すと、ループを開始する可能性があります。

この操作を行います。

public static function repair_title($title){ 
    global $post; 

    // only do this for a specific type, may want to 
    // expand this as needed 
    if("your_type" != $post->post_type) return $title; 

    $firstname  = $_POST["firstname"]; 
    $lastname   = $_POST["firstname"]; 

    $title = $firstname . " " . $lastname; 

    return $title; 
} 

public static function repair_name($name){ 
    global $post; 
    if("your_type" != $post->post_type) return $name; 

    $firstname  = $_POST["firstname"]; 
    $lastname   = $_POST["firstname"]; 

    $name = wp_unique_post_slug(
    $firstname . " " . $lastname, 
    $post->ID, 
    $post->post_type, 
    0 
); 

    return $name; 
} 

編集:(私は、現時点では、この上で作業することが起こった)私自身のコードのバグのビットを記録することにより、これを変更しました。私はget_post_custom()を使用していましたが、これはポストオブジェクトが変更される前に起動されます。したがって、$ _POSTフォーム変数を値として取得する必要があります。

乾杯!

関連する問題