Пользовательские поля WordPress для пользовательских типов сообщений

Эта проблема возникла для нескольких людей в прошлом, но решения для их проблем не сработали для меня, и я много пробовал!

В WordPress я создал 3 пользовательских типа сообщений. 1 для «видео», «новостей» и «музыки» и каждого из этих сообщений на их собственную страницу. Я хочу добавить пользовательские поля, поэтому у меня может быть «художник», год выпуска, «показ» и «об альбоме» для музыкальных записей, например.

Я установил дополнительные пользовательские поля, и я могу добавлять настраиваемые поля к каждому из них, поэтому, когда пользователь нажимает «добавить новый», поля видны. Но проблема в том, что вывод этих полей не отображается на сайте при посещении страницы.

Я создал news.php, music.php и videos.php из файла single.php следующим образом:

<?php /** * Template Name: music Page * * Selectable from a dropdown menu on the edit page screen. */ get_header(); ?> <div id="primary" class="site-content"> <div id="content" role="main"> <?php query_posts( 'post_type=music'); ?> <?php the_meta(); ?> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', get_post_format() ); ?> <?php comments_template( '', true ); ?> <?php endwhile; // end of the loop. ?> </div><!-- #content --> </div><!-- #primary --> <?php get_sidebar(); ?> <?php get_footer(); ?> 

И в functions.php у меня есть следующее:

 /*---------music Custom Post Types---------------------------------*/ function my_custom_post_music() { $labels = array( 'name' => _x( 'music', 'post type general name' ), 'singular_name' => _x( 'music', 'post type singular name' ), 'add_new' => _x( 'Add New', 'book' ), 'add_new_item' => __( 'Add New music' ), 'edit_item' => __( 'Edit music' ), 'new_item' => __( 'New music' ), 'all_items' => __( 'All music' ), 'view_item' => __( 'View music' ), 'search_items' => __( 'Search music' ), 'not_found' => __( 'No music found' ), 'not_found_in_trash' => __( 'No music found in the Trash' ), 'parent_item_colon' => '', 'menu_name' => 'Music' ); $args = array( 'labels' => $labels, 'description' => 'Holds our music and music specific data', 'public' => true, 'menu_position' => 15, 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ), 'has_archive' => true, ); register_post_type( 'music', $args ); } add_action( 'init', 'my_custom_post_music' ); function my_taxonomies_music() { $labels = array( 'name' => _x( 'music Categories', 'taxonomy general name' ), 'singular_name' => _x( 'music Category', 'taxonomy singular name' ), 'search_items' => __( 'Search music Categories' ), 'all_items' => __( 'All music Categories' ), 'parent_item' => __( 'Parent music Category' ), 'parent_item_colon' => __( 'Parent music Category:' ), 'edit_item' => __( 'Edit music Category' ), 'update_item' => __( 'Update music Category' ), 'add_new_item' => __( 'Add New music Category' ), 'new_item_name' => __( 'New music Category' ), 'menu_name' => __( 'music Categories' ), ); $args = array( 'labels' => $labels, 'hierarchical' => true, ); register_taxonomy( 'music_category', 'music', $args ); } add_action( 'init', 'my_taxonomies_music', 0 ); /*---------news Custom Post Types---------------------------------*/ function my_custom_post_news() { $labels = array( 'name' => _x( 'news', 'post type general name' ), 'singular_name' => _x( 'news', 'post type singular name' ), 'add_new' => _x( 'Add New', 'book' ), 'add_new_item' => __( 'Add New news' ), 'edit_item' => __( 'Edit news' ), 'new_item' => __( 'New news' ), 'all_items' => __( 'All news' ), 'view_item' => __( 'View news' ), 'search_items' => __( 'Search news' ), 'not_found' => __( 'No news found' ), 'not_found_in_trash' => __( 'No news found in the Trash' ), 'parent_item_colon' => '', 'menu_name' => 'News' ); $args = array( 'labels' => $labels, 'description' => 'Holds our news and news specific data', 'public' => true, 'menu_position' => 10, 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ), 'has_archive' => true, ); register_post_type( 'news', $args ); } add_action( 'init', 'my_custom_post_news' ); 

Кто-нибудь знает, чего мне не хватает, чтобы получить эту работу или что мне нужно делать.

Любые предложения очень ценятся.

Чтобы отобразить значение настраиваемых полей в цикле, вы можете использовать этот фрагмент кода:

 <?php query_posts( 'post_type=music'); ?> <?php while ( have_posts() ) : the_post(); ?> <?php get_template_part( 'content', get_post_format() ); ?> <?php $what_name_you_want=get_post_meta($post->ID,'Your Custom Field Name',true); ?> <?php echo $what_name_you_want; ?>// This call the value of custom field <?php comments_template( '', true ); ?> <?php endwhile; // end of the loop. ?> 

Скажите, если это сработает!

Выведите данные пользовательского поля из ACF.

 the_field('the-field-name'); 

get_field ('the-field-name') используется для условных выражений ex if (get_field ('my-field'): и т. д. Вы также можете распечатать содержимое, используя

 echo get_field('the-field-name'); 

Я бы сказал, что ваша проблема с короткими кодами Vimeo и Custom Fields может быть связана с плагином wasent, созданным для запуска через настраиваемые поля. Может быть, он проверяет только на_содержание () для короткого кода.

В принципе вам нужно два шага, чтобы добавить настраиваемое поле в пользовательский тип сообщения:

  1. Создайте метабокс, который содержит ваше пользовательское поле
  2. Сохраните свое пользовательское поле в базе данных. Добавьте пользовательское поле под названием «функция» в пользовательский тип сообщения, называемый «prefix-teammembers».

Сначала добавьте метабокс:

 function prefix_teammembers_metaboxes( ) { global $wp_meta_boxes; add_meta_box('postfunctiondiv', __('Function'), 'prefix_teammembers_metaboxes_html', 'prefix_teammembers', 'normal', 'high'); } add_action( 'add_meta_boxes_prefix-teammembers', 'prefix_teammembers_metaboxes' ); 

Если вы добавляете или редактируете «prefix- add_meta_boxes_{custom_post_type} крючок add_meta_boxes_{custom_post_type} .

 function prefix_teammembers_metaboxes_html() { global $post; $custom = get_post_custom($post->ID); $function = isset($custom["function"][0])?$custom["function"][0]:''; ?> <label>Function:</label><input name="function" value="<?php echo $function; ?>"> <?php } 

На втором этапе у вас есть настраиваемое поле в базе данных. При сохранении save_post_{custom_post_type} крючок

 function prefix_teammembers_save_post() { if(empty($_POST)) return; //why is prefix_teammembers_save_post triggered by add new? global $post; update_post_meta($post->ID, "function", $_POST["function"]); } add_action( 'save_post_prefix-teammembers', 'prefix_teammembers_save_post' );