首页 > 解决方案 > 如何在 Wordpress 中为我的主题创建新的自定义字段

问题描述

我创建了一个超级简单的主题。我想要的是能够为每个帖子和页面定义一个包含 3 个字段的数组。

例如具有以下字段:名称、链接和类型的下拉列表

此外,我想为每个帖子/页面添加这些“字段集”的多个项目。我找不到任何关于此的文档,但总是在 Google 中找到导致我使用 WP Plugins 的结果。一般来说,这很好,因为在这种情况下,这似乎可以通过编程方式实现,但不好的原因是我找不到任何关于此的信息。

希望有人可以帮助我。

标签: wordpresswordpress-theming

解决方案


您正在寻找具有以下add_meta_box()功能的自定义元框:

将元框添加到一个或多个屏幕。

add_meta_boxes动作挂钩。

添加所有内置元框后触发:

一个简单的例子是,如果我们想添加一个“正在听...”自定义元框,以便在写帖子时分享我们的心情。

<?php
add_action( 'add_meta_boxes', 'add_meta_listening_to' );
function add_meta_listening_to() {
  add_meta_box(
    'meta_listening_to', //id
    'Listening to ...', //title
    'listeningto', //callback
    'post', //screen &/or post type
    'normal', //context
    'high', //priority
    null //callback_args
  );
};

function listeningto( $post ) { //function handle same as callback
  $ListeningToInput = get_post_meta( $post->ID, 'ListeningToInput', true );
  echo '<input name="listening_to_input" type="text" placeholder="Listening to ..." value="'. $ListeningToInput .'" style="width:100%;">';
};

add_action( 'save_post', 'save_meta_listening_to' );
function save_meta_listening_to( $post_ID ) {
  if ( isset( $_POST[ 'listening_to_input' ] ) ) {
    update_post_meta( $post_ID, 'ListeningToInput', esc_html( $_POST[ 'listening_to_input' ] ) );
  };
}; ?>

然后要在前端显示,我们将使用以下内容:

<?php echo get_post_meta( $post->ID, 'ListeningToInput', true ); ?>

学到更多


推荐阅读