这是我的第一篇文章首先:大家好,很高兴成为社区的一员。 其次请原谅我所有的英语错误,我是法国人......
现在这是我使用Wordpress的问题,因为我现在不是一个好的开发人员:
我已经根据名为“Projects”的页面模型创建了一个自定义帖子类型,以便在管理员中显示更友好的显示:
add_action( 'init', 'create_post_type' );
function create_post_type() {
register_post_type( 'Projects', array(
'labels' => array(
'name' => __( 'Menu Projects' ),
'singular_name' => __( 'Project' )
),
'hierarchical' => true,
'capability_type' => 'page',
'supports' => array('title','editor','thumbnail','custom-fields'),
'public' => true,
'menu_position' => 5,
'menu_icon' => 'dashicons-art'
));
}
然后我添加了一些我需要的自定义字段:
add_action('wp_insert_post', 'wpc_champs_personnalises_defaut');
function wpc_champs_personnalises_defaut($post_id){
if( $_GET['post_type'] = 'Projects' ){
add_post_meta(1, 'company', '', true);
add_post_meta(2, 'année', '', true);
}
return true;
};
现在我想要的是在页面名称旁边的菜单项中显示那些后期元值!
我尝试了不同的东西,所以如果一个Wordpress大师可以帮助我,那就太好了!提前谢谢,祝你有个美好的一天!
答案 0 :(得分:0)
当你添加post meta时,你应该提供$ post_id作为第一个参数。
add_post_meta( $post_id, 'company', 'value here' );
当你想要post meta时,你可以使用get_post_meta函数
get_post_meta( $post_id, 'company', true );
答案 1 :(得分:0)
这最终是如何管理从每个菜单项旁边的自定义字段显示这些元数据。 在我的例子公司和年份:
/* DISPLAY CUSTOM MENU */
wp_nav_menu( array(
'theme_location' => 'secondary'
) );
获取菜单和数组中的项目
$menu = wp_get_nav_menu_object('Projects Menu');
var_dump($menu);
$items = wp_get_nav_menu_items( $menu->term_id);
var_dump($items);
获取1个数组中的所有元数据,然后获取每个元数据的1个数组
/* GET IDs-COMPANIES-YEAR OF EACH ITEM*/
foreach ( (array) $items as $key => $menu_item ) {
$id = $menu_item->object_id;
$meta_id = $menu_item->ID;
$meta_company = get_post_meta( $id, 'company', true );
$meta_year = get_post_meta( $id, 'année', true );
$meta_array[] = array($meta_id, $meta_company, $meta_year);
}
var_dump($meta_array);
/* GET THE IDs OF THE ITEM */
foreach ($meta_array as $key => $value) {
$meta_array_id[] = $meta_array[$key][0];
}
var_dump($meta_array_id);
/* GET THE COMPANIES NAMES OF THE ITEM */
foreach ($meta_array as $key => $value) {
$meta_array_company[] = $meta_array[$key][1];
}
var_dump($meta_array_company);
/* GET THE YEARS OF THE ITEM */
foreach ($meta_array as $key => $value) {
$meta_array_year[] = $meta_array[$key][2];
}
var_dump($meta_array_year);
}
然后转换为javascript数组以显示:
/* GET STRINGIFY IDs IN A JS ARRAY*/
var js_meta_array_id = [<?php echo '"'.implode('","', $meta_array_id).'"' ?>];
console.log(js_meta_array_id);
console.log(js_meta_array_id[0]);
/* GET COMPANIES NAMES IN A JS ARRAY*/
var js_meta_array_company = [<?php echo '"'.implode('","', $meta_array_company).'"' ?>];
console.log(js_meta_array_company);
/* GET YEARS IN A JS ARRAY*/
var js_meta_array_year = [<?php echo '"'.implode('","', $meta_array_year).'"' ?>];
console.log(js_meta_array_year);
定位项目
/* GET MENU PROJECTS MENU */
var menu_project_id = $('#menu-projects-menu');
console.log(menu_project_id);
/*GET MENU PROJECTS ITEMS ID*/
var item = menu_project_id.children('.menu-item');
console.log(item);
最后将元添加到项目中:
var length = item.length,
element = null;
for (var i = 0; i < length; i++) {
element = item[i];
var item_id = (element.id);
$( "#"+item_id ).append( "<span class='company'>" +js_meta_array_company[i]+ "</span><span class='year'>" +js_meta_array_year[i]+ "</span>" );
}
这可能很重,但对我来说效果很好!