Codex

Interested in functions, hooks, classes, or methods? Check out the new WordPress Code Reference!

ko:Using Password Protection

This article is marked as in need of editing. You can help Codex by editing it.

๊ธ€ ๊ฐ€์‹œ์„ฑ ์„ค์ •

์›Œ๋“œํ”„๋ ˆ์Šค ๊ธ€์„ ๊ณต๊ฐœํ•˜๋ฉด, ์ด ๊ธ€์€ ๊ณต๊ฐœ์ (๊ธฐ๋ณธ)์œผ๋กœ ๋ณด์ด๊ฒŒ ๋œ๋‹ค. ์›Œ๋“œํ”„๋ ˆ์Šค์—์„œ ๊ธ€์˜ ๊ณต๊ฐœํ•˜๊ธฐ ์ƒํƒœ๋Š” ๊ฐ€์‹œ์„ฑ์ด ๊ธฐ๋ณธ์œผ๋กœ ๊ณต๊ฐœ๋œ ์ƒํƒœ์ด๋‹ค. ๊ธ€ ํŽธ์ง‘ ํ™”๋ฉด์˜ ๊ณต๊ฐœํ•˜๊ธฐ ์ƒ์ž์˜ ์„ค์ •์— ๋”ฐ๋ฅธ๋‹ค.

์›Œ๋“œํ”„๋ ˆ์Šค๋Š” ๊ธ€์˜ ์ฝ˜ํ…์ธ  ๊ฐ€์‹œ์„ฑ์— ๋Œ€ํ•ด ๋œ ๊ณต๊ฐœ์ ์ธ 2๊ฐœ์˜ ์˜ต์…˜๋„ ์ œ๊ณตํ•œ๋‹ค. "ํŽธ์ง‘" ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด, ๊ฐ€์‹œ์„ฑ: ๊ณต๊ฐœ ์˜†์— 3๊ฐœ์˜ ๋ผ๋””์˜ค ๋ฒ„ํŠผ์ด ํ‘œ์‹œ๋œ๋‹ค:

  • ๊ณต๊ฐœ ๋Š” ๊ธฐ๋ณธ ์„ค์ •์ด๋‹ค.
  • ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ณดํ˜ธ๋ฅผ ์ฒดํฌํ•˜๋ฉด, ๊ธ€์„ ๋ณผ ๋•Œ ํ•„์š”ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋Š” ํ…์ŠคํŠธ ํ•„๋“œ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” 20๋ฌธ์ž ์ด๋‚ด๋กœ ์ œํ•œ๋œ๋‹ค.
  • ๊ฐœ์ธ์šฉ์„ ์ฒดํฌํ•˜๋ฉด, ๊ด€๋ฆฌ์ž ๋˜๋Š” ํŽธ์ง‘์ž ์—ญํ• ์ด ๋ถ€์—ฌ๋œ ์‚ฌ์ดํŠธ ์‚ฌ์šฉ์ž์—๊ฒŒ๋งŒ ๊ธ€์ด ๋ณด์ธ๋‹ค..
    Visibility Settings

๊ฐ€์‹œ์„ฑ ํŽธ์ง‘์ด ๋๋‚˜๋ฉด, "OK" ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค. ์ด์ œ ๊ธ€์— ์ƒˆ๋กœ์šด ์„ค์ •์ด ์ ์šฉ๋œ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ, ๊ฐ€์‹œ์„ฑ: ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ณดํ˜ธ. ๊ธฐ์–ตํ•˜์ž: ์„ค์ • ๋ณ€๊ฒฝ์€ "๊ณต๊ฐœํ•˜๊ธฐ" (๋˜๋Š” ๊ธ€์ด ์ด๋ฏธ ๊ณต๊ฐœ๋˜์—ˆ๋‹ค๋ฉด, "์—…๋ฐ์ดํŠธ") ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด์•ผ ์ ์šฉ์ด ๋œ๋‹ค.

๋น„๋ฐ€๋ฒˆํ˜ธ ์ฐพ๊ธฐ ๋˜๋Š” ๋ณ€๊ฒฝ

๊ด€๋ฆฌ์ž, ํŽธ์ง‘์ž ๋˜๋Š” ๊ธ€์˜ ์ €์ž๋งŒ์ด ๊ธ€์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋˜๋Š” ๊ฐ€์‹œ์„ฑ ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, "๊ฐ€์‹œ์„ฑ: ํŽธ์ง‘" ๋งํฌ๋ฅผ ๋‹ค์‹œ ์‚ฌ์šฉํ•œ๋‹ค. ์ด ์„ค์ •์€ ๋ชจ๋“  ๊ธ€ ํ™”๋ฉด์— ์žˆ๋Š” ๊ธ€์˜ ๋น ๋ฅธ ํŽธ์ง‘ ๋งํฌ์—์„œ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ€์‹œ์„ฑ "ํŽธ์ง‘" ๋งํฌ(๋˜๋Š”"๋น ๋ฅธ ํŽธ์ง‘")์—์„œ ์žŠ์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ฐพ์„ ์ˆ˜๋„ ์žˆ๋‹ค.

๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ณดํ˜ธ๋œ ๊ธ€

Visibility: Protected
์›Œ๋“œํ”„๋ ˆ์Šค๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ณดํ˜ธ๋œ ๊ธ€์€ ๋‹ค๋ฅด๊ฒŒ ํ‘œ์‹œํ•œ๋‹ค. ๊ธ€์˜ ๋‹ค์Œ ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•œ๋‹ค:
  • ์ œ๋ชฉโ€“ ๊ธ€์˜ ์ œ๋ชฉ ์•ž์— "์ž ๊ธด ๊ธ€: "์ด๋ž€ ํ…์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.
  • ์š”์•ฝโ€“ ๊ธ€์˜ ์š”์•ฝ๋ฌธ ๋Œ€์‹ ์—, ๋‹ค์Œ ๊ธ€์ด ํ‘œ์‹œ๋œ๋‹ค: "์ž ๊ธด ๊ธ€์—๋Š” ์š”์•ฝ๋ฌธ์ด ์—†์Šต๋‹ˆ๋‹ค."
  • ๋ณธ๋ฌธโ€“ ๊ธ€์˜ ๋ณธ๋ฌธ ๋Œ€์‹ ์— ๋‹ค์Œ ๋ฌธ์žฅ๊ณผ ํ•จ๊ป˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ํผ์ด ํ‘œ์‹œ๋œ๋‹ค: "์ด ๊ธ€์€ ๋น„๋ฐ€๊ธ€์ž…๋‹ˆ๋‹ค. ๊ธ€์„ ๋ณด๋ ค๋ฉด ์•„๋ž˜์— ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”:"

๊ทธ๋Ÿฌ๋ฏ€๋กœ, "My Post"๋ž€ ์ œ๋ชฉ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ณดํ˜ธ๋œ ๊ธ€์€ ์•„๋ž˜์™€ ๊ฐ™์ด ํ‘œ์‹œ๋œ๋‹ค: Password-protected Content

๋งŽ์€ ๊ธ€๊ณผ ํŽ˜์ด์ง€๋ฅผ ๋ณดํ˜ธํ•˜๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ

์›Œ๋“œํ”„๋ ˆ์Šค๋Š” ์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋ธŒ๋ผ์šฐ์ € ์ฟ ํ‚ค์— ์ €์žฅํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋…์ž๋Š” ๊ฐ™์€ ํŽ˜์ด์ง€๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๋ฐฉ๋ฌธํ•˜์—ฌ๋„ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ค์‹œ ์ž…๋ ฅํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋”๊ตฌ๋‚˜, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ธ€์ด ๊ฐ™์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ๋„, ๋…์ž๋Š” ๋ชจ๋“  ๊ธ€์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ๊ทธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•œ ๋ฒˆ๋งŒ ์ž…๋ ฅํ•˜๋ฉด ๋œ๋‹ค. (์•„๋ž˜ ๊ฒฝ๊ณ  ์ฐธ์กฐ).

์›Œ๋“œํ”„๋ ˆ์Šค๋Š” ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ์•”ํ˜ธ๋งŒ์„ ์ถ”์ ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ, ๋‘ ๊ฐœ์˜ ๊ธ€์ด ๋‹ค๋ฅธ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด, ๊ธ€ A์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ , ๊ธ€ B์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค๋Š” ๊ฒƒ์€, ๊ธ€ A(๋˜๋Š” ์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ชจ๋“  ๊ธ€)๋ฅผ ๋‹ค์‹œ ๋ฐฉ๋ฌธํ•  ๋•Œ ๊ธ€ A์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋‹ค์‹œ ์ž…๋ ฅํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.

์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ๋ณดํ˜ธ

์›Œ๋“œํ”„๋ ˆ์Šค๋Š” ์ •ํ™•ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•  ๋•Œ ๊นŒ์ง€, ์ž ๊ธด ๊ธ€์˜ ๋ณธ๋ฌธ ๋˜๋Š” ์š”์•ฝ๋ฌธ์„ ํ‘œ์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๊ธ€์˜ ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ ๋ฐ์ดํ„ฐ๋Š” ๋ณดํ˜ธ๋˜์ง€ ์•Š์•„, ์—ฌ์ „ํžˆ ๋ณด์ธ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ํ•„๋“œ๋ฅผ ๊ฐ์ถ”๊ธฐ ์œ„ํ•ด์„œ๋Š”, ์กฐ๊ฑด๋ฌธ: post_password_required์„ ์‚ฌ์šฉํ•˜์—ฌ get_post_meta ํ˜ธ์ถœ (์˜ˆ, single.php ๋˜๋Š” page.php์— ์žˆ๋Š”)์„ ๊ฐ์‹ผ๋‹ค. ์ด ํ•˜๋‚˜์˜ ์›Œ๋“œํ”„๋ ˆ์Šค ํ•จ์ˆ˜๋Š” ๊ธ€์ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์š”๊ตฌํ•˜๋Š”์ง€, ์ •ํ™•ํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ž…๋ ฅ ๋˜์—ˆ๋Š”์ง€ ๋‘˜ ๋‹ค ์ฒดํฌํ•œ๋‹ค:

<?php
if ( ! post_password_required() ) {
    // Code to fetch and print CFs, such as:
    $key_1_value_1 = get_post_meta( $post->ID, 'key_1', true );
        echo $key_1_value_1;
}
?>

if๋ฌธ ์•ˆ์— ์žˆ๋Š” post_password_required ํ•จ์ˆ˜๋Š” ๋ชฉ๋ก์— ์ž ๊ธด ๊ธ€์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€, ์‚ฌ์šฉ์ž ์ •์˜๋ฅผ ํ•˜๊ธฐ์—๋„ ํŽธ๋ฆฌํ•˜๋‹ค.

์ž ๊ธด ๊ธ€ ์‚ฌ์šฉ์ž ์ •์˜

์›Œ๋“œํ”„๋ ˆ์Šค ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ๋น„๋ฐ€๋ฒˆํ˜ธ ํผ์˜ ๊ธฐ๋ณธ ๋ฌธ์žฅ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ณ , ์ž ๊ธด ๊ธ€ ์š”์•ฝ๋ฌธ์˜ ๊ธฐ๋ณธ ๋ฌธ์žฅ์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ณ , ๊ธ€ ์š”์•ฝ๋ฌธ์— ๋น„๋ฐ€๋ฒˆํ˜ธ ํผ์„ ์‚ฝ์ž…ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ์›Œ๋“œํ”„๋ ˆ์Šค ํ…Œ๋งˆ์˜ functions.php ํŒŒ์ผ์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

๋น„๋ฐ€๋ฒˆํ˜ธ ํผ์˜ ๊ธฐ๋ณธ ๋ฌธ์žฅ

๋น„๋ฐ€๋ฒˆํ˜ธ ํผ์€ ๋‹ค์Œ์˜ ๊ธฐ๋ณธ ๋ฉ”์‹œ์ง€๋ฅผ ํ‘œ์‹œํ•œ๋‹ค: "์ด๊ธ€์€ ๋น„๋ฐ€๊ธ€์ž…๋‹ˆ๋‹ค. ๊ธ€์„ ๋ณด๋ ค๋ฉด ์•„๋ž˜์— ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”(This post is password protected. To view it please enter your password below):" ๋‹ค์Œ ์ฝ”๋“œ๋Š” ์ด ํผ์— ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€์™€ ๋‹ค๋ฅธ html ๊ตฌ์กฐ์˜ ํผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค — ์ด ์˜ˆ์ œ์—์„œ, ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์‹œ์ง€๋Š”: "To view this password protected post, enter the password below:"์ด๋‹ค

<?php
function my_password_form() {
    global $post;
    $label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID );
    $o = '<form action="' . esc_url( site_url( 'wp-login.php?action=postpass', 'login_post' ) ) . '" method="post">
    ' . __( "To view this protected post, enter the password below:" ) . '
    <label for="' . $label . '">' . __( "Password:" ) . ' </label><input name="post_password" id="' . $label . '" type="password" size="20" maxlength="20" /><input type="submit" name="Submit" value="' . esc_attr__( "Submit" ) . '" />
    </form>
    ';
    return $o;
}
add_filter( 'the_password_form', 'my_password_form' );
?>

์ฐธ๊ณ : my_password_form ํ•จ์ˆ˜๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•œ๋‹ค: print ๋˜๋Š” echo๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

๋น„๋ฐ€๋ฒˆํ˜ธ ํฌ๊ธฐ ์ œํ•œ

๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณดํ˜ธ ํผ์„ ๊ต์ฒดํ•  ๋•Œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ œ์•ฝ์œผ๋กœ ์ฒ˜์Œ 20 ๋ฌธ์ž๋งŒ ์ €์žฅํ•˜๋ฏ€๋กœmaxlength ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” 20์œผ๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค.

์ž ๊ธด ๊ธ€์˜ ์š”์•ฝ๋ฌธ

์ž ๊ธด ๊ธ€์ด ๊ธฐ๋ณธ ์š”์•ฝ๋ฌธ์€: "์ž ๊ธด ๊ธ€์—๋Š” ์š”์•ฝ๋ฌธ์ด ์—†์Šต๋‹ˆ๋‹ค(There is no excerpt because this is a protected post)์ด๋‹ค" ์•„๋ž˜ ์ฝ”๋“œ๋Š” ์ด ๋ฌธ์žฅ์„ ์‚ฌ์šฉ์ž ์ •์˜ — HTML ๊ฐ€๋Šฅํ•œ: ๋ฌธ์žฅ์œผ๋กœ ๊ต์ฒดํ•  ๊ฒƒ์ด๋‹ค.

<?php
function my_excerpt_protected( $excerpt ) {
    if ( post_password_required() )
        $excerpt = '<em>[This is password-protected.]</em>';
    return $excerpt;
}
add_filter( 'the_excerpt', 'my_excerpt_protected' );
?>

"<em>[This is password-protected.]</em>"์„ ์‚ฌ์šฉ์ž ์ •์˜ ์ž ๊ธด ๊ธ€ ์š”์•ฝ๋ฌธ ๋ฉ”์‹œ์ง€๋กœ ๊ต์ฒดํ•  ๊ฒƒ์ด๋‹ค.

์š”์•ฝ๋ฌธ์— ๋น„๋ฐ€๋ฒˆํ˜ธ ํผ ์ถ”๊ฐ€

์ž ๊ธด ๊ธ€์˜ ์š”์•ฝ๋ฌธ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์˜ต์…˜์€ ์š”์•ฝ๋ฌธ ๋Œ€์‹ ์— ๋น„๋ฐ€๋ฒˆํ˜ธ ํผ์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๋ฐฉ๋ฒ•์€ ์ธ๋ฑ์Šค ๋˜๋Š” ์•„์นด์ด๋ธŒ ํŽ˜์ด์ง€์—์„œ ์ง์ ‘ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ, ์ œ๋ชฉ ๋งํฌ๋ฅผ ํด๋ฆญํ•˜๋ฉด, ๋ณธ๋ฌธ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. get_the_password_form ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ์ž ๊ธด ๊ธ€์˜ ์š”์•ฝ๋ฌธ ๋Œ€์‹  ๋น„๋ฐ€๋ฒˆํ˜ธ ํผ์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค:

<?php
function my_excerpt_password_form( $excerpt ) {
    if ( post_password_required() )
        $excerpt = get_the_password_form();
    return $excerpt;
}
add_filter( 'the_excerpt', 'my_excerpt_password_form' );
?>

์ด๊ฒƒ์€ ๊ธฐ๋ณธ ์›Œ๋“œํ”„๋ ˆ์Šค ๋น„๋ฐ€๋ฒˆํ˜ธ ํผ๊ณผ ๊ธฐ๋ณธ ๋ฉ”์‹œ์ง€ ๋˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค. post_password_required()์™€ get_the_password_form() ์ž‘๋™ ๋ฐฉ๋ฒ•์„ ๋” ์ž˜ ์ดํ•ดํ•˜๊ณ ์ž ํ•œ๋‹ค๋ฉด, wp-includes/post-template.php์—์„œ ์ด ํ•จ์ˆ˜์˜ ์ •์˜๋ฅผ ์ฝ์–ด๋ณธ๋‹ค.

์ด ์›Œ๋“œํ”„๋ ˆ์Šค ์ฝ”์–ด(core) ํŒŒ์ผ์—์„œ, the_excerpt์™€ the_password_form ํ•„ํ„ฐ ๋ฐ get_the_excerpt(), get_the_title(), get_the_content() ํ•จ์ˆ˜๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์ด ํ•จ์ˆ˜๋Š”, ๊ฐ€์‹œ์„ฑ ์„ค์ •์— ๋”ฐ๋ผ, ๊ธ€์˜ ์ œ๋ชฉ, ์š”์•ฝ๋ฌธ๊ณผ ๋ณธ๋ฌธ์„ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์–ดํ•œ๋‹ค.

์ž ๊ธด ๊ธ€ ๊ฐ์ถ”๊ธฐ

๋•Œ๋กœ๋Š”, ํ™ˆ ํŽ˜์ด์ง€ ๋˜๋Š” ์•„์นด์ด๋ธŒ ํŽ˜์ด์ง€๊ณผ ๊ฐ™์€ ์‚ฌ์ดํŠธ์˜ ๋‹ค๋ฅธ ๊ณณ์— ์ž ๊ธด ๊ธ€์„ ํ‘œ์‹œ๋˜์ง€ ์•Š๊ฒŒ ํ•˜๊ณ  ์‹ถ๋‹ค. ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ(pagination)์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋ฉด์„œ, ํšจ์œจ์ ์œผ๋กœ ์ž ๊ธด ๊ธ€์„ ๊ฐ์ถ”๋ ค๋ฉด, ํ…Œ๋งˆ์˜ functions.php์— ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค:

<?php

// Filter to hide protected posts
function exclude_protected($where) {
	global $wpdb;
	return $where .= " AND {$wpdb->posts}.post_password = '' ";
}

// Decide where to display them
function exclude_protected_action($query) {
	if( !is_single() && !is_page() && !is_admin() ) {
		add_filter( 'posts_where', 'exclude_protected' );
	}
}

// Action to queue the filter at the right time
add_action('pre_get_posts', 'exclude_protected_action');

?>

์ด ์ฝ”๋“œ๋Š” ๋‘ ๋ถ€๋ถ„์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค: ์ฒซ ๋ฒˆ์งธ ๋ถ€๋ถ„์€ posts_where ํ•„ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ. ์›Œ๋“œํ”„๋ ˆ์Šค๊ฐ€ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” SQL ์ฟผ๋ฆฌ์—์„œ ์ง์ ‘ ์ž ๊ธด ๊ธ€์„ ํšจ์œจ์ ์œผ๋กœ ์‚ญ์ œํ•œ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ถ€๋ถ„์€, ๊ฐœ๋ณ„ ๊ธ€, ๊ฐœ๋ณ„ ํŽ˜์ด์ง€ ๋ฐ ๊ด€๋ฆฌ ํŽ˜์ด์ง€๋ฅผ ์ œ์™ธํ•œ, ๋ชจ๋“  ํŽ˜์ด์ง€์— ์ด ํ•„ํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

์™œ pre_get_posts๊ฐ€ ์ด ํ•จ์ˆ˜์— ๋งž๋Š” action์ธ์ง€ ๋” ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด, pre_get_posts action reference๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.