ホームページ > バックエンド開発 > PHPチュートリアル > Wordpressで記事に固定フィールドを追加する方法の紹介

Wordpressで記事に固定フィールドを追加する方法の紹介

不言
リリース: 2023-04-02 10:44:01
オリジナル
2988 人が閲覧しました

この記事では、WordPress で記事に固定フィールドを追加する方法を主に紹介します。一定の参考価値がありますので、共有します。困っている友達は参考にしてください。

Wordpress に記事を追加してみようデータ テーブル。記事編集ページで編集し、REST API を通じて取得できるようにするためのフィールドです。

例: サムネイル フィールド litpic を記事に追加します。

まず、mysql を介して記事テーブル wp_posts にフィールド litpic を追加します。

次に、テーマの関数の後に次のコードを追加します。 php :

add_action( 'add_meta_boxes', 'myplugin_add_custom_box');
 

add_action( 'save_post', 'myplugin_save_postdata');function myplugin_add_custom_box() {
add_meta_box('myplugin_sectionid',
'设置缩略图', // 可自行修改标题文字
'myplugin_inner_custom_box',
'post');
}function myplugin_inner_custom_box( $post ) {
global $wpdb;
// Use nonce for verification
wp_nonce_field( plugin_basename( __FILE__ ), 
'myplugin_noncename' );
// 获取固定字段litpic的值,用于显示之前保存的值
// 此处wp_posts新添加的字段为litpic,多个用半角逗号隔开
$date = $wpdb->get_row( $wpdb->prepare( "SELECT litpic FROM $wpdb->posts WHERE ID = %d", $post->ID) );
// litpic  字段输入框的HTML代码
echo &#39;<label for="litpic_new_field">图片url </label>&#39;;
echo &#39;<input type="text" id="litpic_new_field" name="litpic_new_field" value="&#39;.$date->litpic.&#39;" size="28" />&#39;;
// 多个字段依此类推
}
function myplugin_save_postdata( $post_id ) {
// verify if this is an auto save routine.
// If it is our form has not been submitted, so we dont want to do anything
if ( defined( ’DOING_AUTOSAVE’ ) && DOING_AUTOSAVE )return;
// verify this came from the our screen and with proper authorization,
// because save_post can be triggered at other times
if ( !wp_verify_nonce( $_POST[&#39;myplugin_noncename&#39;], plugin_basename( __FILE__ ) ) )return;
// 权限验证
if ( &#39;post&#39; == $_POST[&#39;post_type&#39;] ) {
if ( !current_user_can( &#39;edit_post&#39;, $post_id ) )return;
}
// 获取编写文章时填写的固定字段的值,多个字段依此类推
$litpic = $_POST[&#39;litpic_new_field&#39;];global $wpdb;$wpdb->update( "$wpdb->posts",
// 以下一行代码,多个字段的话参照下面的写法,单引号中是字段名,右边是变量值。半角逗号隔开
array( &#39;litpic&#39; => $litpic),
array( &#39;ID&#39; => $post_id ),
// 添加了多少个新字段就写多少个%s,半角逗号隔开
array( &#39;%s&#39;),
array( &#39;%d&#39;)
);
}
ログイン後にコピー

追加後、図に示すように、記事ページに litpic フィールドの入力ボックスが表示されます。

#ただし、現時点では、残りの API は litpic フィールドを出力しません。

/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php ファイルを開きます。

次のコードを追加します:

if ( ! empty( $schema[&#39;properties&#39;][&#39;litpic&#39;] ) ) {            
$data[&#39;litpic&#39;] = $post->litpic;
        }
ログイン後にコピー

&#39;litpic&#39;        => array(                    
&#39;description&#39; => __( &#39;A litpic to protect access to the content and excerpt.&#39; ),
                    &#39;type&#39;        => &#39;string&#39;,
                    &#39;context&#39;     => array( &#39;view&#39;, &#39;edit&#39;, &#39;embed&#39; ),
                ),
ログイン後にコピー

$post_type_attributes = array(            &#39;title&#39;,
            &#39;editor&#39;,
            &#39;author&#39;,
            &#39;excerpt&#39;,
            &#39;thumbnail&#39;,
            &#39;comments&#39;,
            &#39;revisions&#39;,
            &#39;page-attributes&#39;,
            &#39;post-formats&#39;,
            &#39;custom-fields&#39;,
            &#39;litpic&#39;,
        );        $fixed_schemas = array(            &#39;post&#39; => array(                &#39;title&#39;,
                &#39;editor&#39;,
                &#39;author&#39;,
                &#39;excerpt&#39;,
                &#39;thumbnail&#39;,
                &#39;comments&#39;,
                &#39;revisions&#39;,
                &#39;post-formats&#39;,
                &#39;custom-fields&#39;,
                &#39;litpic&#39;,
            ),
ログイン後にコピー

case &#39;litpic&#39;:                    
$schema[&#39;properties&#39;][&#39;litpic&#39;] = array(                        
&#39;description&#39; => __( &#39;The ID for the litpic of the object.&#39; ),
                        &#39;type&#39;        => &#39;string&#39;,
                        &#39;context&#39;     => array( &#39;view&#39;, &#39;edit&#39;, &#39;embed&#39; ),
                    );                    break;
ログイン後にコピー

これで、残りの API は litpic フィールドを出力できるようになります。

上記がこの記事の全内容です。皆様の学習に少しでもお役に立てれば幸いです。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。

関連推奨事項:

activemq stomp クラスコードについて


Yii フレームワークの追加、削除、変更、確認について

以上がWordpressで記事に固定フィールドを追加する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート