>本教程演示了擴(kuò)展WordPress的快速編輯功能,以包括自定義元元字段。 讓我們簡化流程并提高清晰度。
>
密鑰改進(jìn):此插件添加了“特色帖子”,“等級(jí)”和“副標(biāo)題”字段到快速編輯接口,提高了后管理效率。
>插件開發(fā):創(chuàng)建插件是擴(kuò)展核心WordPress功能的最佳實(shí)踐。這避免了修改核心文件,確保更新的更新。
<?php /** * Plugin Name: Extend Quick Edit * Plugin URI: https://elevate360.com.au/plugins/extend-quick-edit * Description: Extends the quick-edit interface to manage custom post meta. * Version: 1.0.0 * Author: Simon Codrington * Author URI: http://simoncodrington.com.au * Text Domain: extend-quick-edit * Domain Path: /languages */ class EL_Extend_Quick_Edit { private static $instance = null; private function __construct() { add_action( 'manage_posts_columns', array( $this, 'add_custom_columns' ) ); add_action( 'manage_posts_custom_column', array( $this, 'manage_custom_columns' ), 10, 2 ); add_action( 'quick_edit_custom_box', array( $this, 'display_quick_edit_fields' ), 10, 2 ); add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_admin_scripts' ) ); add_action( 'add_meta_boxes', array( $this, 'add_meta_box' ), 10, 2 ); add_action( 'save_post', array( $this, 'save_post_meta' ), 10, 2 ); } public function add_meta_box( $post_type, $post ) { if ( $post_type === 'post' ) { add_meta_box( 'extend-quick-edit-meta', __( 'Additional Post Information', 'extend-quick-edit' ), array( $this, 'render_meta_box' ), 'post', 'side', 'default' ); } } public function render_meta_box( $post ) { wp_nonce_field( 'extend_quick_edit_meta', 'extend_quick_edit_nonce' ); $featured = get_post_meta( $post->ID, 'post_featured', true ); $rating = get_post_meta( $post->ID, 'post_rating', true ); $subtitle = get_post_meta( $post->ID, 'post_subtitle', true ); ?> <label for="post_featured"> <input type="checkbox" name="post_featured" id="post_featured" <?php checked( $featured, 'yes' ); ?> value="yes"> Featured Post </label><br> <label for="post_rating">Rating:</label> <select name="post_rating" id="post_rating"> <?php for ( $i = 1; $i <= 5; $i++ ) { ?> <option value="<?php echo $i; ?>" <?php selected( $rating, $i ); ?>><?php echo $i; ?></option> <?php } ?> </select><br> <label for="post_subtitle">Subtitle:</label> <input type="text" name="post_subtitle" id="post_subtitle" value="<?php echo esc_attr( $subtitle ); ?>"> <?php } public function add_custom_columns( $columns ) { $new_columns = array( 'post_featured' => __( 'Featured?', 'extend-quick-edit' ), 'post_rating' => __( 'Rating', 'extend-quick-edit' ), 'post_subtitle' => __( 'Subtitle', 'extend-quick-edit' ), ); return array_merge( $columns, $new_columns ); } public function manage_custom_columns( $column_name, $post_id ) { $value = get_post_meta( $post_id, $column_name, true ); echo '<div id="' . esc_attr( $column_name ) . '_' . $post_id . '">' . esc_html( $value ) . '</div>'; } public function display_quick_edit_fields( $column_name, $post_type ) { if ( $post_type === 'post' ) { wp_nonce_field( 'extend_quick_edit_meta', 'extend_quick_edit_nonce' ); ?> <fieldset> <?php if ( $column_name === 'post_featured' ): ?> <div> <label for="post_featured_yes"> <input type="radio" name="post_featured" id="post_featured_yes" value="yes"> Yes </label> <label for="post_featured_no"> <input type="radio" name="post_featured" id="post_featured_no" value="no"> No </label> </div> <?php elseif ( $column_name === 'post_rating' ): ?> <div> <select name="post_rating" id="post_rating"> <?php for ( $i = 1; $i <= 5; $i++ ) { ?> <option value="<?php echo $i; ?>"><?php echo $i; ?></option> <?php } ?> </select> </div> <?php elseif ( $column_name === 'post_subtitle' ): ?> <div> <input type="text" name="post_subtitle" id="post_subtitle"> </div> <?php endif; ?> </fieldset> <?php } } public function enqueue_admin_scripts() { wp_enqueue_script( 'extend-quick-edit-js', plugin_dir_url( __FILE__ ) . 'extend-quick-edit.js', array( 'jquery', 'inline-edit-post' ), '1.0.0', true ); } public function save_post_meta( $post_id, $post ) { if ( ! isset( $_POST['extend_quick_edit_nonce'] ) || ! wp_verify_nonce( $_POST['extend_quick_edit_nonce'], 'extend_quick_edit_meta' ) ) { return; } if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) { return; } if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } $fields = array( 'post_featured', 'post_rating', 'post_subtitle' ); foreach ( $fields as $field ) { if ( isset( $_POST[ $field ] ) ) { $value = sanitize_text_field( $_POST[ $field ] ); update_post_meta( $post_id, $field, $value ); } } } public static function get_instance() { if ( is_null( self::$instance ) ) { self::$instance = new self(); } return self::$instance; } } EL_Extend_Quick_Edit::get_instance(); ?>
(Extend-Quick-edit.js):
jQuery(document).ready(function($) { var $inlineEdit = inlineEditPost.edit; inlineEditPost.edit = function(id) { $inlineEdit.apply(this, arguments); var $row = $(this.row); var post_id = parseInt($row.attr('id').replace(/[^0-9]/g, '')); var fields = ['post_featured', 'post_rating', 'post_subtitle']; $.each(fields, function(index, field) { var value = $('#' + field + '_' + post_id).text(); if (field === 'post_featured') { $row.find('input[name="' + field + '"][value="' + value + '"]').prop('checked', true); } else { $row.find('#' + field).val(value); } }); } });記住將
放置在與插件的PHP文件相同的目錄中。 這種改進(jìn)的代碼更加簡潔,高效且易于維護(hù)。 簡化了JavaScript,可以使用jQuery直接填充快速編輯字段。 錯(cuò)誤處理和安全性也得到了增強(qiáng)。 這種修訂的方法提供了一種更強(qiáng)大和用戶友好的解決方案。 激活插件后,您將在快速編輯接口中看到新的自定義字段。請記住在安裝插件后清除瀏覽器緩存。extend-quick-edit.js
>
以上是在WordPress儀表板中擴(kuò)展快速編輯操作的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

熱AI工具

Undress AI Tool
免費(fèi)脫衣服圖片

Undresser.AI Undress
人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover
用于從照片中去除衣服的在線人工智能工具。

Clothoff.io
AI脫衣機(jī)

Video Face Swap
使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的代碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)代碼編輯軟件(SublimeText3)

使用Git管理WordPress項(xiàng)目時(shí),應(yīng)只將主題、自定義插件和配置文件納入版本控制;設(shè)置.gitignore文件以忽略上傳目錄、緩存和敏感配置;利用webhook或CI工具實(shí)現(xiàn)自動(dòng)部署并注意數(shù)據(jù)庫處理;采用兩分支策略(main/develop)進(jìn)行協(xié)作開發(fā)。這樣做可避免沖突、保障安全,并提升協(xié)作與部署效率。

創(chuàng)建Gutenberg塊的關(guān)鍵在于理解其基本結(jié)構(gòu)并正確連接前后端資源。1.準(zhǔn)備開發(fā)環(huán)境:安裝本地WordPress、Node.js和@wordpress/scripts;2.使用PHP注冊塊并用JavaScript定義塊的編輯和顯示邏輯;3.通過npm構(gòu)建JS文件以使更改生效;4.遇到問題時(shí)檢查路徑、圖標(biāo)是否正確或使用實(shí)時(shí)監(jiān)聽構(gòu)建避免重復(fù)手動(dòng)編譯。按照這些步驟,可以逐步實(shí)現(xiàn)一個(gè)簡單的Gutenberg塊。

使用WordPress測試環(huán)境是為了確保新功能、插件或主題在正式上線前的安全性和兼容性,避免影響真實(shí)網(wǎng)站。搭建測試環(huán)境的步驟包括:下載安裝本地服務(wù)器軟件(如LocalWP、XAMPP),創(chuàng)建站點(diǎn)、設(shè)置數(shù)據(jù)庫和管理員賬號(hào),安裝主題和插件進(jìn)行測試;復(fù)制正式網(wǎng)站到測試環(huán)境的方法是通過插件導(dǎo)出站點(diǎn)、導(dǎo)入測試環(huán)境并替換域名;使用時(shí)應(yīng)注意不使用真實(shí)用戶數(shù)據(jù)、定期清理無用數(shù)據(jù)、備份測試狀態(tài)、適時(shí)重置環(huán)境,并統(tǒng)一團(tuán)隊(duì)配置以減少差異問題。

在WordPress中,當(dāng)新增自定義文章類型或修改固定鏈接結(jié)構(gòu)后,需手動(dòng)刷新重寫規(guī)則,此時(shí)可通過代碼調(diào)用flush_rewrite_rules()函數(shù)實(shí)現(xiàn)。1.可在主題或插件激活鉤子中添加該函數(shù)以自動(dòng)刷新;2.僅在必要時(shí)執(zhí)行一次,如添加CPT、分類法或修改鏈接結(jié)構(gòu)后;3.避免頻繁調(diào)用以免影響性能;4.多站點(diǎn)環(huán)境下需視情況為每個(gè)站點(diǎn)單獨(dú)刷新;5.某些托管環(huán)境可能限制規(guī)則保存。此外,訪問“設(shè)置>固定鏈接”頁面點(diǎn)擊保存也可觸發(fā)刷新,適合非自動(dòng)化場景。

tosetupredirectsinwordpressingthe.htaccessfile,locateThEfileInyourSite'sRootDirectorectoryAndDrectRectrulesabovethe#beginWordPresssection.forbasic301redirects,USETHEETHEETERECTREFTATRECTATREDERTREFTATREDERTREFTATRECTRECTATRECTRECTATREDECT301/OLD-PAGEHTTPS:

UsingsMtpForWordPresseMailSimProvesDeliverabilitialComparedComparedTothEdeDefaultPhpMail()函數(shù).1.smtpauthenticateswithyouremailserver.2.somemomehostsdisablesablephpmail()

要實(shí)現(xiàn)響應(yīng)式WordPress主題設(shè)計(jì),首先要使用HTML5和移動(dòng)優(yōu)先的Meta標(biāo)簽,在header.php中添加viewport設(shè)置以確保移動(dòng)端正確顯示,并用HTML5結(jié)構(gòu)標(biāo)簽組織布局;其次,利用CSS媒體查詢實(shí)現(xiàn)不同屏幕寬度下的樣式適配,按移動(dòng)優(yōu)先原則編寫樣式,常用斷點(diǎn)包括480px、768px和1024px;第三,彈性處理圖片和布局,為圖片設(shè)置max-width:100%并使用Flexbox或Grid布局替代固定寬度;最后,通過瀏覽器開發(fā)者工具和真實(shí)設(shè)備進(jìn)行充分測試,優(yōu)化加載性能,確保響應(yīng)

TOINTEGRATETHIRD-PARTYAPISINTOWORDPRESS,關(guān)注臺(tái)詞:1.SelectAutableabepianDobtainCredentialslikeapikeYsoroAuthtoKensByEnterRegisteringThemSecure.2.ChooseBeteBetB??eteBetB??eteBetB??etebetInpliCityOorcustimplicityOrcustomPliCoseTompliCoseTomploomcoseusionfunctionfunctionfunctibunitiacuciencipuity forfunigation。
