wp_get_code_editor_settings ( $args )
wp_get_code_editor_settings: 這個函式檢索WordPress管理中的程式碼編輯器的設定。它不接受任何引數,並返回一個設定陣列,包括程式碼編輯器的主題、行數和語法高亮選項。
生成並返回程式碼編輯器設定。
function wp_get_code_editor_settings( $args ) {
$settings = array(
'codemirror' => array(
'indentUnit' => 4,
'indentWithTabs' => true,
'inputStyle' => 'contenteditable',
'lineNumbers' => true,
'lineWrapping' => true,
'styleActiveLine' => true,
'continueComments' => true,
'extraKeys' => array(
'Ctrl-Space' => 'autocomplete',
'Ctrl-/' => 'toggleComment',
'Cmd-/' => 'toggleComment',
'Alt-F' => 'findPersistent',
'Ctrl-F' => 'findPersistent',
'Cmd-F' => 'findPersistent',
),
'direction' => 'ltr', // Code is shown in LTR even in RTL languages.
'gutters' => array(),
),
'csslint' => array(
'errors' => true, // Parsing errors.
'box-model' => true,
'display-property-grouping' => true,
'duplicate-properties' => true,
'known-properties' => true,
'outline-none' => true,
),
'jshint' => array(
// The following are copied from <https://github.com/WordPress/wordpress-develop/blob/4.8.1/.jshintrc>.
'boss' => true,
'curly' => true,
'eqeqeq' => true,
'eqnull' => true,
'es3' => true,
'expr' => true,
'immed' => true,
'noarg' => true,
'nonbsp' => true,
'onevar' => true,
'quotmark' => 'single',
'trailing' => true,
'undef' => true,
'unused' => true,
'browser' => true,
'globals' => array(
'_' => false,
'Backbone' => false,
'jQuery' => false,
'JSON' => false,
'wp' => false,
),
),
'htmlhint' => array(
'tagname-lowercase' => true,
'attr-lowercase' => true,
'attr-value-double-quotes' => false,
'doctype-first' => false,
'tag-pair' => true,
'spec-char-escape' => true,
'id-unique' => true,
'src-not-empty' => true,
'attr-no-duplication' => true,
'alt-require' => true,
'space-tab-mixed-disabled' => 'tab',
'attr-unsafe-chars' => true,
),
);
$type = '';
if ( isset( $args['type'] ) ) {
$type = $args['type'];
// Remap MIME types to ones that CodeMirror modes will recognize.
if ( 'application/x-patch' === $type || 'text/x-patch' === $type ) {
$type = 'text/x-diff';
}
} elseif ( isset( $args['file'] ) && false !== strpos( basename( $args['file'] ), '.' ) ) {
$extension = strtolower( pathinfo( $args['file'], PATHINFO_EXTENSION ) );
foreach ( wp_get_mime_types() as $exts => $mime ) {
if ( preg_match( '!^(' . $exts . ')$!i', $extension ) ) {
$type = $mime;
break;
}
}
// Supply any types that are not matched by wp_get_mime_types().
if ( empty( $type ) ) {
switch ( $extension ) {
case 'conf':
$type = 'text/nginx';
break;
case 'css':
$type = 'text/css';
break;
case 'diff':
case 'patch':
$type = 'text/x-diff';
break;
case 'html':
case 'htm':
$type = 'text/html';
break;
case 'http':
$type = 'message/http';
break;
case 'js':
$type = 'text/javascript';
break;
case 'json':
$type = 'application/json';
break;
case 'jsx':
$type = 'text/jsx';
break;
case 'less':
$type = 'text/x-less';
break;
case 'md':
$type = 'text/x-gfm';
break;
case 'php':
case 'phtml':
case 'php3':
case 'php4':
case 'php5':
case 'php7':
case 'phps':
$type = 'application/x-httpd-php';
break;
case 'scss':
$type = 'text/x-scss';
break;
case 'sass':
$type = 'text/x-sass';
break;
case 'sh':
case 'bash':
$type = 'text/x-sh';
break;
case 'sql':
$type = 'text/x-sql';
break;
case 'svg':
$type = 'application/svg+xml';
break;
case 'xml':
$type = 'text/xml';
break;
case 'yml':
case 'yaml':
$type = 'text/x-yaml';
break;
case 'txt':
default:
$type = 'text/plain';
break;
}
}
}
if ( in_array( $type, array( 'text/css', 'text/x-scss', 'text/x-less', 'text/x-sass' ), true ) ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => $type,
'lint' => false,
'autoCloseBrackets' => true,
'matchBrackets' => true,
)
);
} elseif ( 'text/x-diff' === $type ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'diff',
)
);
} elseif ( 'text/html' === $type ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'htmlmixed',
'lint' => true,
'autoCloseBrackets' => true,
'autoCloseTags' => true,
'matchTags' => array(
'bothTags' => true,
),
)
);
if ( ! current_user_can( 'unfiltered_html' ) ) {
$settings['htmlhint']['kses'] = wp_kses_allowed_html( 'post' );
}
} elseif ( 'text/x-gfm' === $type ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'gfm',
'highlightFormatting' => true,
)
);
} elseif ( 'application/javascript' === $type || 'text/javascript' === $type ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'javascript',
'lint' => true,
'autoCloseBrackets' => true,
'matchBrackets' => true,
)
);
} elseif ( false !== strpos( $type, 'json' ) ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => array(
'name' => 'javascript',
),
'lint' => true,
'autoCloseBrackets' => true,
'matchBrackets' => true,
)
);
if ( 'application/ld+json' === $type ) {
$settings['codemirror']['mode']['jsonld'] = true;
} else {
$settings['codemirror']['mode']['json'] = true;
}
} elseif ( false !== strpos( $type, 'jsx' ) ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'jsx',
'autoCloseBrackets' => true,
'matchBrackets' => true,
)
);
} elseif ( 'text/x-markdown' === $type ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'markdown',
'highlightFormatting' => true,
)
);
} elseif ( 'text/nginx' === $type ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'nginx',
)
);
} elseif ( 'application/x-httpd-php' === $type ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'php',
'autoCloseBrackets' => true,
'autoCloseTags' => true,
'matchBrackets' => true,
'matchTags' => array(
'bothTags' => true,
),
)
);
} elseif ( 'text/x-sql' === $type || 'text/x-mysql' === $type ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'sql',
'autoCloseBrackets' => true,
'matchBrackets' => true,
)
);
} elseif ( false !== strpos( $type, 'xml' ) ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'xml',
'autoCloseBrackets' => true,
'autoCloseTags' => true,
'matchTags' => array(
'bothTags' => true,
),
)
);
} elseif ( 'text/x-yaml' === $type ) {
$settings['codemirror'] = array_merge(
$settings['codemirror'],
array(
'mode' => 'yaml',
)
);
} else {
$settings['codemirror']['mode'] = $type;
}
if ( ! empty( $settings['codemirror']['lint'] ) ) {
$settings['codemirror']['gutters'][] = 'CodeMirror-lint-markers';
}
// Let settings supplied via args override any defaults.
foreach ( wp_array_slice_assoc( $args, array( 'codemirror', 'csslint', 'jshint', 'htmlhint' ) ) as $key => $value ) {
$settings[ $key ] = array_merge(
$settings[ $key ],
$value
);
}
/**
* Filters settings that are passed into the code editor.
*
* Returning a falsey value will disable the syntax-highlighting code editor.
*
* @since 4.9.0
*
* @param array $settings The array of settings passed to the code editor.
* A falsey value disables the editor.
* @param array $args {
* Args passed when calling `get_code_editor_settings()`.
*
* @type string $type The MIME type of the file to be edited.
* @type string $file Filename being edited.
* @type WP_Theme $theme Theme being edited when on the theme file editor.
* @type string $plugin Plugin being edited when on the plugin file editor.
* @type array $codemirror Additional CodeMirror setting overrides.
* @type array $csslint CSSLint rule overrides.
* @type array $jshint JSHint rule overrides.
* @type array $htmlhint HTMLHint rule overrides.
* }
*/
return apply_filters( 'wp_code_editor_settings', $settings, $args );
}
要使用` get_users `函式獲取所有使用者列表,可以按照以下步驟進行:
1. 使用` get_users `函式呼叫獲取使用者列表:
$users = get_users();
2. 您可以按需使用引數來過濾結果。例如,您可以通過角色、使用者ID、使用者登入名等過濾使用者列表。以下是一個根據使用者角色為過濾條件的示例:
$users = get_users( array(
'role' => 'subscriber' // 將角色名稱替換為您要過濾的角色
) );
在上述示例中,將` role `引數設定為所需的角色名稱來過濾使用者列表。
3. 您可以使用迴圈遍歷獲取的使用者列表,並訪問每個使用者的屬性。例如,以下示例將顯示每個使用者的使用者名稱和電子郵件地址:
foreach( $users as $user ) {
echo '使用者名稱:' . $user->user_login . ', 電子郵件:' . $user->user_email . ;
}
在上述示例中,通過` $user->user_login `和` $user->user_email `訪問每個使用者的使用者名稱和電子郵件地址。
請注意,` get_users `函式預設返回所有使用者,並可以根據需要使用更多引數進行過濾。您可以參閱WordPress官方文件中的` get_users `函式文件,瞭解更多可用引數和用法示例。
總結起來,使用` get_users `函式獲取所有使用者列表的步驟是:
get_users `函式獲取使用者列表。在WordPress中,可以使用WP_PLUGIN_DIR和WP_PLUGIN_URL常量來定義外掛的目錄路徑和URL。
1. `WP_PLUGIN_DIR`:這是一個常量,用於定義外掛的目錄路徑(檔案系統路徑)。您可以使用以下程式碼在外掛檔案中訪問該常量:
$plugin_dir = WP_PLUGIN_DIR . '/your-plugin-folder/';
在上述程式碼中,將"your-plugin-folder"替換為您外掛的實際資料夾名稱。使用該常量,您可以獲取外掛檔案的完整路徑。
2. `WP_PLUGIN_URL`:這是一個常量,用於定義外掛的URL(用於在網頁上訪問外掛檔案)。以下是一個使用該常量的示例:
$plugin_url = WP_PLUGIN_URL . '/your-plugin-folder/';
同樣,請將"your-plugin-folder"替換為您外掛的實際資料夾名稱。使用該常量,您可以獲取外掛在網頁上的完整URL。
請注意,`WP_PLUGIN_DIR`和`WP_PLUGIN_URL`常量在WordPress版本2.6之後引入。從WordPress 5.5版本開始,這兩個常量被標記為過時(deprecated),因為WordPress更傾向於使用新的外掛檔案結構。如果您正在開發新外掛,建議使用新的外掛檔案結構和相關函式。
在新的外掛檔案結構中,可以使用以下函式來獲取外掛的目錄路徑和URL:
- `plugin_dir_path()`:獲取外掛目錄路徑。
- `plugin_dir_url()`:獲取外掛URL。
這些函式會自動將外掛的版本、多站點和SSL等考慮因素納入計算。
總結起來,使用`WP_PLUGIN_DIR`和`WP_PLUGIN_URL`常量定義外掛的目錄和URL的方法是:
$plugin_dir = WP_PLUGIN_DIR . '/your-plugin-folder/'; $plugin_url = WP_PLUGIN_URL . '/your-plugin-folder/';
但請注意,這兩個常量已被標記為過時,建議使用新的外掛檔案結構和相關函式來獲取外掛的路徑和URL。
使用PHP在WordPress中新增自定義功能可以通過以下方式實現:
下面是一個實操示例。
要在WordPress中新增自定義功能,可以按照以下步驟使用PHP編寫並新增自定義功能:
// 新增自定義功能示例
// 1. 建立自定義短程式碼
function custom_shortcode() {
return '這是我的自定義短程式碼內容';
}
add_shortcode('custom', 'custom_shortcode');
// 2. 自定義小工具
function custom_widget() {
echo '這是我的自定義小工具內容';
}
register_widget('custom_widget');
// 3. 自定義選單
function custom_menu() {
register_nav_menu('custom-menu', '自定義選單');
}
add_action('after_setup_theme', 'custom_menu');
// 4. 自定義頁面模板
function custom_page_template() {
/* Template Name: 自定義模板 */
// 自定義模板的內容和樣式
}
請注意,修改主題檔案可以在主題更新時丟失,因此建議在進行任何更改之前備份functions.php檔案。此外,為避免不必要的錯誤和衝突,建議在新增自定義功能前先了解WordPress開發文件和最佳實踐,以確保正確、安全地實現所需的自定義功能。
使用 do_action 函式可以觸發一個鉤子函式。do_action 函式的引數與要觸發的鉤子函式的引數相同。
例如,觸發save_post鉤子函式的程式碼如下:
do_action( 'save_post', $post_ID, $post );
這裡,$post_ID 和 $post 是傳遞給鉤子函式的引數。
使用 wp_get_current_user 獲取當前登入使用者的資訊:
$current_user = wp_get_current_user(); // 獲取當前使用者的ID $user_id = $current_user->ID; // 獲取當前使用者的使用者名稱 $user_login = $current_user->user_login; // 獲取當前使用者的郵箱 $user_email = $current_user->user_email; // 獲取當前使用者的顯示名稱 $display_name = $current_user->display_name;