web-dev-qa-db-ja.com

カスタムフィールドにデフォルト値を設定できますか

クライアントがカスタムフィールドに追加しない場合は、特定のカスタムフィールドにデフォルト値を設定しようとしています。

さらに一歩進んで、cat = 22が選択された場合、このカスタムフィールドは自動的に投稿に追加されます。デフォルトでは、クライアントが適切な数を追加することを願っています

これはグローバルな機能によって達成できると思いますが、私の脳は今これを処理していません

1
jeremy rice

あなたはsave_postアクションにフックを追加することによってそれをチェックすることができます。これにより、すべての投稿にカスタムフィールドのデフォルト値が設定されます。

add_action( 'save_post', 'wpse8170_save_post', 10, 2 );
function wpse8170_save_post( $post_id, WP_Post $post ) {
    if ( ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) || !current_user_can( 'edit_post' ) ) {
        return;
    }

    if ( has_category( 22, $post_id ) && !get_post_meta( $post_id, 'my-custom-field', true ) ) {
        update_post_meta( $post_id, 'my-custom-field', 'my default value' );
    }
}
2
Eugene Manuilov

あなたはグローバルを通してこれをしないでしょう、あなたは単にadd_post_metaのデフォルトの機能性を使います。

// your loop
if ( in_category(22)) {

    //check if the meta field has a value
    $meta_values = get_post_meta($post->ID, 'your_meta_key', true);

    if(empty($meta_values)){
    //add a default value
    add_post_meta($post->ID, 'your_meta_key', 'some default value');
    }
}

参照: http://codex.wordpress.org/Custom_Fields

0
Wyck