WordPress์ ๋ํ ์ฌ์ฉ์ ์ ์๊ฐ ๋ง์์๋ก์ด ํ์ผ์ ๊ตฌ์ฑํ๊ฑฐ๋ ๋ถํ ํด์ผํ๋์ง์ ๋ํด ๋ ๋ง์ด ์๊ฐํ๊ธฐ ์์ํฉ๋๋ค.
๋ ๊ตฌ์ฒด์ ์ผ๋ก, ๊ด๋ฆฌ ์์ญ์๋ง ์ ์ฉ๋๋ ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ๊ณผ ๊ณต์ฉ ์น ์ฌ์ดํธ์๋ง ์ ์ฉ๋๋ ๋ค๋ฅธ ์ฌ์ฉ์ ์ ์ ๊ธฐ๋ฅ์ด์๋ ๊ฒฝ์ฐ ๋ชจ๋ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ ์์ฒด ํ์ผ์ ํฌํจํ๊ฑฐ๋ ํจ๊ป ๊ทธ๋ฃนํ ํด์ผํ๋ ์ด์ ๊ฐ ์์ต๋๊น?
ํ์ผ์ ๋ณ๋์ ํ์ผ๋ก ๋๋๊ฑฐ๋ ๊ทธ๋ฃนํํ๋ฉด WordPress ์น ์ฌ์ดํธ ์๋๊ฐ ๋นจ๋ผ์ง๊ฑฐ๋ WordPress / PHP๊ฐ is_admin ์ฝ๋ ์ ๋์ฌ๊ฐ์๋ ๊ธฐ๋ฅ์ ์๋์ผ๋ก ๊ฑด๋ ๋ฐ๋์?
ํฐ ํจ์ ํ์ผ์ ์ฒ๋ฆฌํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น (๊ด์ฐ์ 1370 ์ค์ ๋๋ค).
๋ต๋ณ
ํ
๋ง์ ์ฝ๋ functions.php
๊ฐ ์๋๋๊ธฐ ์์ ํ๋ ์์ ์ ๋๋ฌํ๋ฉด ์ฝ๋ ๋ฅผ ์ฌ๋ฌ ํ์ผ๋ก ๋๋ ์ค๋น๊ฐ ๋ ๊ฒ์
๋๋ค. ๋๋์ด ์์ ์์ ๊ฑฐ์ ๋ ๋ฒ์งธ ๋ณธ์ฑ์ผ๋กํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค.
๋ฅผ ์ฌ์ฉํ์ฌ ํ
๋ง์ ํฌํจ ํ์ผ functions.php
ํ์ผ
๋ด ํ
๋ง ๋๋ ํ ๋ฆฌ ์๋์ โincludesโ ๋ผ๋ ์๋ธ ๋๋ ํ ๋ฆฌ๋ฅผ ์์ฑ ํ๊ณ ๋น์์ ๋ง์ ๋ฐ๋ผ ๊ตฌ์ฑ๋๋ ํฌํจ ํ์ผ๋ก ์ฝ๋๋ฅผ ์ธ๊ทธ๋จผํธ ํํ๋ค (์ด๋ ์ฌ์ดํธ๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ง์์ ์ผ๋ก ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋งํ๊ณ ์ด๋์ํค๋ ๊ฒ์ ์๋ฏธํ๋ค). ์ค์ ์ฝ๋๋ฅผ ๋ฃ์ต๋๋ค functions.php
. ๋ชจ๋ ๊ฒ์ ํฌํจ ํ์ผ์ ๋ค์ด๊ฐ๋๋ค. ๋จ์ง ๋ด ์ทจํฅ.
์๋ฅผ ๋ค์ด ์ฌ๊ธฐ WordPress Answers์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ์ ํ ์คํธํ๋ ๋ฐ ์ฌ์ฉํ๋ ํ ์คํธ ์ค์น๊ฐ ์์ต๋๋ค. ์ง๋ฌธ์ ๋๋ต ํ ๋๋ง๋ค ๋ค์ ํ์ํ ๋๋ฅผ ๋๋นํ์ฌ ์ฝ๋๋ฅผ ๋ณด๊ดํ์ญ์์ค. ์ด๊ฒ์ ์ค์ ์ฌ์ดํธ์์ ์ํ ํ ์์ ์ด ์๋์ง๋ง ์ฝ๋๋ฅผ ๋๋๋ ๋ฉ์ปค๋์ฆ์ ๋ณด์ฌ์ค๋๋ค.
<?php
/*
* functions.php
*
*/
require_once( __DIR__ . '/includes/null-meta-compare.php');
require_once( __DIR__ . '/includes/older-examples.php');
require_once( __DIR__ . '/includes/wp-admin-menu-classes.php');
require_once( __DIR__ . '/includes/admin-menu-function-examples.php');
// WA: Adding a Taxonomy Filter to Admin List for a Custom Post Type?
// http://wordpress.stackexchange.com/questions/578/
require_once( __DIR__ . '/includes/cpt-filtering-in-admin.php');
require_once( __DIR__ . '/includes/category-fields.php');
require_once( __DIR__ . '/includes/post-list-shortcode.php');
require_once( __DIR__ . '/includes/car-type-urls.php');
require_once( __DIR__ . '/includes/buffer-all.php');
require_once( __DIR__ . '/includes/get-page-selector.php');
// http://wordpress.stackexchange.com/questions/907/
require_once( __DIR__ . '/includes/top-5-posts-per-category.php');
// http://wordpress.stackexchange.com/questions/951/
require_once( __DIR__ . '/includes/alternate-category-metabox.php');
// http://lists.automattic.com/pipermail/wp-hackers/2010-August/034384.html
require_once( __DIR__ . '/includes/remove-status.php');
// http://wordpress.stackexchange.com/questions/1027/removing-the-your-backup-folder-might-be-visible-to-the-public-message-generate
require_once( __DIR__ . '/includes/301-redirects.php');
๋๋ ํ๋ฌ๊ทธ์ธ ๋ง๋ค๊ธฐ
๋ค๋ฅธ ์ต์
์ ๊ธฐ๋ฅ๋ณ๋ก ์ฝ๋๋ฅผ ๊ทธ๋ฃนํํ๊ณ ์์ ์ ํ๋ฌ๊ทธ์ธ์ ๋ง๋๋ ๊ฒ์
๋๋ค. ๋๋ฅผ ์ํด ํ
๋ง functions.php
ํ์ผ ์์ ์ฝ๋ฉ์ ์์ ํ๊ณ ์ฝ๋๊ฐ ์์ฑ ๋ ๋๊น์ง ๋๋ถ๋ถ์ ์ฝ๋๋ฅผ ํ๋ฌ๊ทธ์ธ์ผ๋ก ์ฎ๊ฒผ์ต๋๋ค.
๊ทธ๋ฌ๋ PHP ์ฝ๋ ๊ตฌ์ฑ์ผ๋ก๋ถํฐ ํฐ ์ฑ๋ฅ ํฅ์์ ์์ต๋๋ค
๋ฐ๋ฉด์ PHP ํ์ผ์ ๊ตฌ์ฑํ๋ ๊ฒ์ ์์ ๋ฐ ์ ์ง ๊ด๋ฆฌ ์ฑ์ ๋ง๋๋ ๋ฐ 99 %, ์ฑ๋ฅ์ ๋ํด 1 %์
๋๋ค ( HTTP๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ์์ ํธ์ถํ๋ ์กฐ์ง .js
๋ฐ .css
ํ์ผ์ ์์ ํ ๋ค๋ฅธ ๊ฒฝ์ฐ์ด๋ฉฐ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค). ์๋ฒ์ PHP ์ฝ๋๋ ์ฑ๋ฅ ์ธก๋ฉด์์ ์ค์ํ์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฝ๋ ์กฐ์ง์ ๊ฐ์ธ ์ทจํฅ์ ๋๋ค
๋ง์ง๋ง์ผ๋ก ์ฝ๋ ๊ตฌ์ฑ์ ๊ฐ์ธ ์ทจํฅ์ ๋๋ค. ์ด๋ค ์ฌ๋๋ค์ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ด ์ซ์ ๊ฒ์ฒ๋ผ ์ฝ๋๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ์์ ์ซ์ดํฉ๋๋ค. ๋ง์์ ๋๋ ๊ฒ์ ์ฐพ์์ ๊ณ ์ํ์ง๋ง ์๊ฐ์ด ์ง๋จ์ ๋ฐ๋ผ ๋ ๋ง์ด ๋ฐฐ์ฐ๊ณ ๋ ํธํ๊ฒ ์ ๋ต์ ๋ฐ์ ์ํฌ ์ ์์ต๋๋ค.
๋ต๋ณ
๋ฆ์ ๋ต๋ณ
์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ํ์ผ์ ํฌํจ์ํค๋ ๋ฐฉ๋ฒ :
function wpse1403_bootstrap()
{
// Here we load from our includes directory
// This considers parent and child themes as well
locate_template( array( 'inc/foo.class.php' ), true, true );
}
add_action( 'after_setup_theme', 'wpse1403_bootstrap' );
ํ๋ฌ๊ทธ์ธ์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ฌ๋ฐ๋ฅธ ๊ฒฝ๋ก ๋๋ URi๋ฅผ ์ป๋ ๋ฐฉ๋ฒ
๋ํ ๋ค์๊ณผ ๊ฐ์ ํ์ผ ์์คํ API ํจ์๋ฅผ ์ดํด๋ณด์ญ์์ค.
home_url()
plugin_dir_url()
plugin_dir_path()
admin_url()
get_template_directory()
get_template_directory_uri()
get_stylesheet_directory()
get_stylesheet_directory_uri()
- ๊ธฐํ
์ ์๋ฅผ ์ค์ด๋ ๋ฐฉ๋ฒ include/require
๋๋ ํ ๋ฆฌ์์ ๋ชจ๋ ํ์ผ ์ ๊ฐ์ ธ์์ผ ํ๋ ๊ฒฝ์ฐ
foreach ( glob( 'path/to/folder/*.php' ) as $file )
include $file;
์ด๋ ์คํจ (ํ๋ก๋์ ์ฌ์ฉ์ ์ ํฉ) /๋ก๋ ํ ์์๋ ํ์ผ์ ๋ฌด์ํฉ๋๋ค.
์ด ๋์์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๊ฐ๋ฐ ์ค์ ๋ค๋ฅธ ๊ตฌ์ฑ์ ์ฌ์ฉํ๋ ค๊ณ ํ ์ ์์ต๋๋ค.
$files = ( defined( 'WP_DEBUG' ) AND WP_DEBUG )
? glob( 'path/to/folder/*.php', GLOB_ERR )
: glob( 'path/to/folder/*.php' )
foreach ( $files as $file )
include $file;
ํธ์ง : OOP / SPL ์ ๊ทผ
๋ฐฉ๊ธ ๋์์์์ด ๋ต๋ณ์ด ์ ์ ๋ ๋ง์์ง์ง๋ฅผ ๋ฐ๊ณ ์์์ ๋ณด์์ ๋, ๋๋ PHP 5.3+ ์ธ๊ณ์์ ์์ฆ ์ด๋ป๊ฒํ๊ณ ์๋์ง ๋ณด์ฌ์ค ์ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค. ๋ค์ ์์ ๋์ด๋ผ๋ ํ
๋ง ํ์ ํด๋์์ ๋ชจ๋ ํ์ผ์๋ก๋ํฉ๋๋ค src/
. ์ฌ๊ธฐ์๋ ๋ฉ๋ด, ์ด๋ฏธ์ง ๋ฑ๊ณผ ๊ฐ์ ํน์ ์์
์ ์ฒ๋ฆฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์์ต๋๋ค. ๋ชจ๋ ๋จ์ผ ํ์ผ์ด๋ก๋ ๋ ๋ ์ด๋ฆ์ ์ ๊ฒฝ ์ฐ์ง ์์๋๋ฉ๋๋ค. ์ด ๋๋ ํ ๋ฆฌ์ ๋ค๋ฅธ ํ์ ํด๋๊ฐ ์์ผ๋ฉด ๋ฌด์๋ฉ๋๋ค.
์ด \FilesystemIterator
๋ PHP 5.3+์
๋๋ค supercedor ์ค๋ฒ \DirectoryIterator
. ๋ ๋ค PHP SPL์ ์ผ๋ถ์
๋๋ค. PHP 5.2์์๋ ๋ด์ฅ SPL ํ์ฅ ๊ธฐ๋ฅ์ ๋ ์ ์์์ง๋ง (๋ชจ๋ ์ค์น ์ค 1 % ๋ฏธ๋ง์ด ๊ทธ๋ฌ์ต๋๋ค) SPL์ ์ด์ PHP ํต์ฌ์ ์ผ๋ถ์
๋๋ค.
<?php
namespace Theme;
$files = new \FilesystemIterator( __DIR__.'/src', \FilesystemIterator::SKIP_DOTS );
foreach ( $files as $file )
{
/** @noinspection PhpIncludeInspection */
! $files->isDir() and include $files->getRealPath();
}
์ด์ ์๋ ์ฌ์ ํ PHP 5.2.x๋ฅผ ์ง์ํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์๋ฃจ์
์ ์ฌ์ฉ \FilterIterator
ํ์ต๋๋ค. src/Filters
๋๋ ํ ๋ฆฌ์ A ๋ ํด๋์ ์ ํฌ์ธํฐ๊ฐ ์๋ ํ์ผ ๋ง ๊ฒ์ํ๊ณ a \DirectoryIterator
๋ ๋ฐ๋ณต ๋ฐ๋ก๋๋ฅผ ์ํํฉ๋๋ค.
namespace Theme;
use Theme\Filters\IncludesFilter;
$files = new IncludesFilter( new \DirectoryIterator( __DIR__.'/src' ) );
foreach ( $files as $file )
{
include_once $files->current()->getRealPath();
}
๋ \FilterIterator
๋งํผ ๊ฐ๋จํ๋ค :
<?php
namespace Theme\Filters;
class IncludesFilter extends \FilterIterator
{
public function accept()
{
return
! $this->current()->isDot()
and $this->current()->isFile()
and $this->current()->isReadable();
}
}
ํ์ฌ๊น์ง๋ PHP 5.2๊ฐ ์ฃฝ๊ณ / EOL์ด ์๋๋ผ (๊ทธ๋ฆฌ๊ณ 5.3๋), ๋ ๋ง์ ์ฝ๋์ ๊ฒ์์ ํ์ผ์ด ํ๋ ๋ ์๋ค๋ ์ฌ์ค์ด ์๊ธฐ ๋๋ฌธ์ ๋์ค์ ๋์๊ฐ ํ์๊ฐ ์์ผ๋ฉฐ PHP 5.2.x๋ฅผ ์ง์ํ ์ด์ ๊ฐ ์์ต๋๋ค.
์์ฝ
๋ ์์ธํ ๋ด์ฉ์ WPKrauts์์ ํ์ธํ ์ ์์ต๋๋ค .
ํธ์ง ๋ถ๋ช
ํ ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ ๋ค์ ์คํ์ด์ค๋ฅผ ํตํด ์ด๋ฏธ ์ ์ ๋ ์ ์ ํ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ๊ฒ์ ๋ฃ์ด PSR-4 ์๋๋ก๋๋ฅผ namespace
์ํด ์ค๋น๋ d ์ฝ๋ ๋ฅผ ์ฌ์ฉ ํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ ๋ค์ Composer ์ a ๋ฅผ ์ฌ์ฉํ์ฌ ์ข
์์ฑ์ ๊ด๋ฆฌํ๊ณ PHP ์๋ ๋ก๋๋ฅผ ์๋์ผ๋ก ๋น๋ํ์ญ์์ค (์ด๋ฅผ ํธ์ถํ์ฌ ํ์ผ์ ์๋์ผ๋ก ๊ฐ์ ธ์ต๋๋ค ). WP Starter ๋ PHP ์ธ๊ณ์์ ์ฌ์ค์์ ํ์ค์ด๋ฉฐ, ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ด๋ฉฐ ์ฌ์ ์๋ํ๋๊ณ ๋จ์ํ๋์์ต๋๋ค .composer.json
use \<namespace>\ClassName
๋ต๋ณ
๋ณด์ผ๋ฌ ํ๋ ์ดํธ์์ ์ฌ์ฉ์ ์ ์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ํ ๋ง ๋๋ ํ ๋ฆฌ์์ ํจ์๋ผ๋ ํด๋๋ฅผ ์ฐพ์ผ์ญ์์ค (์๋ ๊ฒฝ์ฐ). ๊ทธ๋ฐ ๋ค์ ํด๋น ํด๋์์ ์ฐพ์ ๋ชจ๋ .php ํ์ผ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ (์๋ ๊ฒฝ์ฐ) include ()๋ฅผ ์คํํฉ๋๋ค. ๊ทธ๋ค ๊ฐ๊ฐ์.
์ด๋ ๊ฒํ๋ฉด ์๋ก์ด ๊ธฐ๋ฅ์ ์์ฑํด์ผ ํ ๋๋ง๋ค ํจ์ ํด๋์ PHP ํ์ผ์ ์ถ๊ฐํ๊ธฐ ๋งํ๋ฉด ์ฌ์ดํธ์ ์ฝ๋๋ฅผ ์ฝ๋ฉ ํ ํ์๊ฐ ์์ต๋๋ค.
<?php
/*
FUNCTIONS for automatically including php documents from the functions folder.
*/
//if running on php4, make a scandir functions
if (!function_exists('scandir')) {
function scandir($directory, $sorting_order = 0) {
$dh = opendir($directory);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;
}
if ($sorting_order == 0) {
sort($files);
} else {
rsort($files);
}
return ($files);
}
}
/*
* this function returns the path to the funtions folder.
* If the folder does not exist, it creates it.
*/
function get_function_directory_extension($template_url = FALSE) {
//get template url if not passed
if (!$template_url)$template_url = get_bloginfo('template_directory');
//replace slashes with dashes for explode
$template_url_no_slash = str_replace('/', '.', $template_url);
//create array from URL
$template_url_array = explode('.', $template_url_no_slash);
//--splice array
//Calculate offset(we only need the last three levels)
//We need to do this to get the proper directory, not the one passed by the server, as scandir doesn't work when aliases get involved.
$offset = count($template_url_array) - 3;
//splice array, only keeping back to the root WP install folder (where wp-config.php lives, where the front end runs from)
$template_url_array = array_splice($template_url_array, $offset, 3);
//put back togther as string
$template_url_return_string = implode('/', $template_url_array);
fb::log($template_url_return_string, 'Template'); //firephp
//creates current working directory with template extention and functions directory
//if admin, change out of admin folder before storing working dir, then change back again.
if (is_admin()) {
$admin_directory = getcwd();
chdir("..");
$current_working_directory = getcwd();
chdir($admin_directory);
} else {
$current_working_directory = getcwd();
}
fb::log($current_working_directory, 'Directory'); //firephp
//alternate method is chdir method doesn't work on your server (some windows servers might not like it)
//if (is_admin()) $current_working_directory = str_replace('/wp-admin','',$current_working_directory);
$function_folder = $current_working_directory . '/' . $template_url_return_string . '/functions';
if (!is_dir($function_folder)) mkdir($function_folder); //make folder, if it doesn't already exist (lazy, but useful....ish)
//return path
return $function_folder;
}
//removed array elements that do not have extension .php
function only_php_files($scan_dir_list = false) {
if (!$scan_dir_list || !is_array($scan_dir_list)) return false; //if element not given, or not array, return out of function.
foreach ($scan_dir_list as $key => $value) {
if (!strpos($value, '.php')) {
unset($scan_dir_list[$key]);
}
}
return $scan_dir_list;
}
//runs the functions to create function folder, select it,
//scan it, filter only PHP docs then include them in functions
add_action('wp_head', fetch_php_docs_from_functions_folder(), 1);
function fetch_php_docs_from_functions_folder() {
//get function directory
$functions_dir = get_function_directory_extension();
//scan directory, and strip non-php docs
$all_php_docs = only_php_files(scandir($functions_dir));
//include php docs
if (is_array($all_php_docs)) {
foreach ($all_php_docs as $include) {
include($functions_dir . '/' . $include);
}
}
}
๋ต๋ณ
ํด๋ ์์ ํ์ผ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ ์ถ์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ์ ํ์ผ์ ์ถ๊ฐ ํ ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ฝ๊ฒ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ํญ์ ํด๋์ค ๋๋ ๋ค์ ์คํ์ด์ค๋ก ์์ฑํฉ๋๋ค-ํจ์, ๋ฉ์๋ ๋ฑ์ ๋ค์ ์คํ์ด์ค์ ๋ํด ๋ ๋ง์ ์ ์ด๊ถ์ ๋ถ์ฌํ์ญ์์ค.
์์ ์ ์๋; ๋ํ ํด๋์ค * .php์ ๋ํ ๊ณ์ฝ๊ณผ ํจ๊ป ์ฌ์ฉ
public function __construct() {
$this->load_classes();
}
/**
* Returns array of features, also
* Scans the plugins subfolder "/classes"
*
* @since 0.1
* @return void
*/
protected function load_classes() {
// load all files with the pattern class-*.php from the directory classes
foreach( glob( dirname( __FILE__ ) . '/classes/class-*.php' ) as $class )
require_once $class;
}
ํ
๋ง์์ ๋๋ ์ข
์ข
๋ค๋ฅธ ์๋๋ฆฌ์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์ง์ ID์์ externel ํ์ผ์ ๊ธฐ๋ฅ์ ์ ์ํฉ๋๋ค (์ ์ฐธ์กฐ). externel ํ์ผ์ ๊ธฐ๋ฅ์ ์ฝ๊ฒ ๋นํ์ฑํ ํ ๊ฒฝ์ฐ ์ ์ฉํฉ๋๋ค. WP ํต์ฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ณ require_if_theme_supports()
์ง์ ID๊ฐ ํ์ฑํ ๋ ๊ฒฝ์ฐ์๋ง๋ก๋ํฉ๋๋ค. ๋ค์ ์์์๋ ํ์ผ์๋ก๋ํ๊ธฐ ์ ์ ์ค ์์์ด ์ง์๋๋ ID๋ฅผ ์ ์ํ์ต๋๋ค.
/**
* Add support for Theme Customizer
*
* @since 09/06/2012
*/
add_theme_support( 'documentation_customizer', array( 'all' ) );
// Include the theme customizer for options of theme options, if theme supported
require_if_theme_supports(
'documentation_customizer',
get_template_directory() . '/inc/theme-customize.php'
);
์ด ํ ๋ง ์ ์ ์ฅ์ ์์ ๋ ๋ง์ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค .
๋ต๋ณ
๋คํธ์ํฌ ์ค์น๋ฅผ ํตํด ์ฝ 50 ๊ฐ์ ๊ณ ์ ํ ์ฌ์ฉ์ ์ ์ ํ์ด์ง ์ ํ์ด์๋ ์๋ฒ๋ฅผ ๋ค๋ฅธ ์ธ์ด๋ก ์ฌ์ดํธ๋ฅผ ๊ด๋ฆฌํฉ๋๋ค. ํ๋ฌ๊ทธ์ธ ํค๊ณผ ํจ๊ป.
์ฐ๋ฆฌ๋ ์ด๋ ์์ ์์ ๊ทธ๊ฒ์ ๋ชจ๋ ๋ถํ ํด์ผํ์ต๋๋ค. 20-30k ์ค์ ์ฝ๋๊ฐ์๋ ํจ์ ํ์ผ์ ์ ํ ์ฌ๋ฏธ ์์ง ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ์ฝ๋๋ฒ ์ด์ค๋ฅผ ๋ ์ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ชจ๋ ์ฝ๋๋ฅผ ๋ฆฌํฉํ ๋งํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ๊ธฐ๋ณธ ์๋ ํ๋ ์ค ํ ๋ง ๊ตฌ์กฐ๋ ์์ ์ฌ์ดํธ์๋ ์ ํฉํ์ง๋ง ๋ ํฐ ์ฌ์ดํธ์๋ ์ ํฉํ์ง ์์ต๋๋ค.
์ฐ๋ฆฌ์ ์๋ก์ด functions.php์๋ ์ฌ์ดํธ๋ฅผ ์์ํ๋ ๋ฐ ํ์ํ ๊ฒ๋ง ํฌํจ๋์ด ์์ง๋ง ํน์ ํ์ด์ง์ ์ํ๋ ๊ฒ์ ์์ต๋๋ค.
์ด์ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ํ ๋ง ๋ ์ด์์์ MCV ๋์์ธ ํจํด๊ณผ ๋น์ทํ์ง๋ง ์ ์ฐจ ์ ์ฝ๋ฉ ์คํ์ผ์ ๋๋ค.
์๋ฅผ ๋ค์ด ํ์ ํ์ด์ง :
page-member.php . ํ์ด์ง๋ฅผ ์ด๊ธฐํํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ์์ฝ์ค ํจ์ ๋๋ ์ ์ฌํ ํธ์ถ. MCV ์คํ์ผ์ ์ปจํธ๋กค๋ฌ ๋ถํ๊ณผ ๋์ผ ํ ์ ์์ต๋๋ค.
functions-member.php . ์ด ํ์ด์ง์ ๊ด๋ จ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ํฌํจํฉ๋๋ค. ์ด๊ฒ์ ํ์์์ํ ๊ธฐ๋ฅ์ด ํ์ํ ๋ค๋ฅธ ์๋ฒ ํ์ด์ง์๋ ํฌํจ๋์ด ์์ต๋๋ค.
content-member.php . HTML์ ๋ํ ๋ฐ์ดํฐ๋ฅผ MCV์ ๋ชจ๋ธ๊ณผ ๋๋ฑํ๊ฒ ์ค๋นํฉ๋๋ค.
layout-member.php . HTML ๋ถ๋ถ.
Efter๋ ์ด๋ฌํ ๋ณ๊ฒฝ ์์ ์ ์ํํ์ฌ ๊ฐ๋ฐ ์๊ฐ์ด 50 % ์ฝ๊ฒ ๋จ์ถ๋์์ผ๋ฉฐ ์ด์ ์ ํ ์์ ์๊ฐ ์๋ก์ด ์์ ์ ์ํํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ณ ์์ต๋๋ค. ๐
๋ต๋ณ
์์ ํ ๋ง functions.php ํ์ผ์์ :
require_once( get_stylesheet_directory() . '/inc/custom.php' );
๋ต๋ณ
functions.php์์ ํ์ํ ํ์ผ์ ํธ์ถํ๋ ๋ ์ฐ์ํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
require_once locate_template ( โ/ inc / functions / shortcodes.phpโ);