옵션과 설정의 차이점은 무엇입니까?


14

그리고 어느 것을 사용해야합니까?

사이의 차이가 무엇 옵션 APISetings API는 ?

100 개가 넘는 관리자 옵션이있는 테마가 있는데 어떻게 등록하고 저장해야합니까? 현재 Options API를 사용하고 있지만 만족스럽지 않습니다. 모든 단일 옵션이 개별적으로 등록되어 많은 데이터베이스 쿼리를 생성합니다.

현재 WordPress 옵션 / 설정을 저장하는 세 가지 방법이 있습니다.

1. 옵션 API-오래된 방법 (최악의 방법)

(이것을 이미 사용하고 있습니다)

<form method="post" action="options.php">
<?php wp_nonce_field('update-options'); ?>        

// all the inputs

<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="option1,option2,option3,..." />
<p class="submit">
<input type="submit" value="<?php _e('Save Changes') ?>" />
</p>
</form>

그리고 프론트 엔드에서 :

echo get_option('option1'); 

못생긴 것처럼 보이며 그것이 많은 옵션을 저장하는 올바른 방법이라고 생각하지 않습니다 (어쨌든 그룹화하고 싶습니다).

2. 옵션 API-큰 배열로서의 1 옵션.

html 양식을 사용 하여이 배열을 업데이트하는 방법을 잘 모르겠습니다. 나는 그것이 다음과 같이 가야한다고 믿는다.

$opt['option1'] = foo
$opt['option2'] = foo
$opt['option3'] = bar

update_option('theme_settings',$opt);

그런 다음 프런트 엔드에서

$settings = get_option('theme_settings');
echo $settings['option1']; 
echo $settings['option2']; 
echo $settings['option3']; 

실제로 쿼리 수가 줄어 들었으며 모두 하나의 옵션으로 제공됩니다. 나는 이것을 사용하고 싶지만 위에서 언급했듯이 Wordpress 관리 양식 에서이 옵션 배열을 업데이트하는 방법을 모르겠습니다. 내 생각 : <input type="hidden" name="theme_settings" value="option1,option2,option3,..." />새로운 요소를 추가하는 대신 배열을 덮어 쓸 것인가?

3. 설정 API-새로운 방법.

추가 코드가 많이 필요합니다.

function register_theme_settings() {
    //register our settings   
    register_setting( 'theme-settings', 'option1' );     
    register_setting( 'theme-settings', 'option2' );     
    register_setting( 'theme-settings', 'option3' );     
    register_setting( 'theme-settings', 'option4' );     
    register_setting( 'theme-settings', 'option5' );     
    // imagine this for 100 and more options    
};

그리고 하나의 옵션을 배열로 사용 하여이 메소드와 메소드의 차이점이 무엇인지 잘 모르겠습니다.

tl; dr 따라서 테마 설정 저장소를 어떻게 투영하여 빠르게 작동 하고 모든 옵션 / 설정 을 한 곳에 저장 하면 예를 들어 하나의 간단한 기능으로 모두 에코 / 덤프 할 수 있습니다 (예 , 나는 그것을 잘못하고 싶지만이 설정 API로 어떻게하는지 알지 못합니다). 두 번째 방법은 지금까지 가장 좋습니다.

답변:


11

옵션 API는 기본적으로 데이터베이스 API이므로 데이터베이스의 옵션 테이블에서 값을 쉽게 가져오고 저장할 수 있습니다.

설정 API는 인터페이스 API입니다. 이를 통해 향후 WordPress 인터페이스 변경에 적응할 수있는 방식으로 설정 화면을 구축 할 수있을뿐만 아니라 코드를 롤링하는 것보다 보안 (논스 및 화이트리스트 및 유효성 검사 등)을 자동으로보다 쉽게 ​​처리 할 수 ​​있습니다.

설정 API에 대한 추가 정보 : http://ottopress.com/2009/wordpress-settings-api-tutorial/


3
+1. 설정 API는 올바른 접근 방식이며 눈에 띄지 않고 100 가지 테마 옵션을 처리합니다. 일부 바보는 설정 API를 WordPress Themes통합하기 위한 매우 긴 튜토리얼을 작성했습니다 .
칩 베넷

오토, @ 칩 베넷 감사합니다. 추가 질문이 하나 더 있습니다. 설명서에 따르면 각 관리자 페이지마다 여러 설정 그룹을 만들어야하는데 어떻게하면 성능 / 쿼리 수에 영향을 미칩니 까? 너무 길어서 질문을 읽을 수없는 것처럼 모든 옵션을 한 그룹 ( '테마 설정'이라고 함) 내에 유지하는 데 문제가 있습니까? :)
Wordpressor

2
하나의 옵션 그룹 사용 하는 것이 좋습니다 . UI 구성이 필요한 경우 설정 섹션 또는 설정 페이지 탭을 사용하십시오.
Chip Bennett

@ Chip Bennett, 좋습니다, 고마워요 :) 훌륭한 튜토리얼 btw.
Wordpressor

@ ChipBennett 링크 : 귀하의 의견 에 WordPress 테마설정 API를 통합하는 것이 깨졌습니다.
Vijay Chavda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.