Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 显示自定义发布元数据到wordpress菜单项_Php_Wordpress - Fatal编程技术网

Php 显示自定义发布元数据到wordpress菜单项

Php 显示自定义发布元数据到wordpress菜单项,php,wordpress,Php,Wordpress,这是我的第一篇帖子,所以首先:大家好,很高兴成为社区的一部分。 第二,请提前告诉我所有的英语错误,我是法国人 这就是我在Wordpress上遇到的问题,因为我目前不是一个好的开发人员: 我基于名为“项目”的页面模型创建了一个自定义帖子类型,以便在管理员界面中更友好地显示: add_action( 'init', 'create_post_type' ); function create_post_type() { register_post_type( 'Projects', arra

这是我的第一篇帖子,所以首先:大家好,很高兴成为社区的一部分。 第二,请提前告诉我所有的英语错误,我是法国人

这就是我在Wordpress上遇到的问题,因为我目前不是一个好的开发人员:

我基于名为“项目”的页面模型创建了一个自定义帖子类型,以便在管理员界面中更友好地显示:

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;
};
现在我想要的是在我的菜单项中显示那些post元值,就在页面名称的旁边


我尝试过不同的东西,但都不成功,所以如果Wordpress大师能帮助我,那就太好了!提前谢谢,祝你有一个愉快的一天

添加post meta时,应提供$post_id作为第一个参数

add_post_meta( $post_id, 'company', 'value here' );
当您想要发布meta时,可以使用get_post_meta函数

get_post_meta( $post_id, 'company', true );

最后,这就是如何管理显示每个菜单项旁边的自定义字段中的图元。 在我的公司和年份示例中:

/* 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);
在一个数组中获取所有元,然后为每个元获取一个数组

/* 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);
最后将元添加到项目:

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>" );
        }

这可能很重,但对我来说很好用

嗨,伊万,谢谢你的回复,如果我知道帖子,我可以让这个功能工作,并获得一个特定的元,但我仍然不知道如何根据帖子关联的帖子将它们自动显示到菜单结构中。。。我很震惊,我可能要做一个foreach。。。还有一件事——你知道数据库中的元数据存储在哪里吗?我不确定你想显示哪个菜单。它在前端站点上吗?如果是,请阅读WordPress中的_循环。post meta保存在数据库的wp_PosteTa表中。是的,我想将其作为前端菜单:注册导航菜单数组的“主菜单”=>“主菜单”,“朱莉主题”,“次菜单”=>“项目菜单”,“朱莉主题”;第二个问题,我会检查循环,谢谢你的建议。我发现这个相关的问题可能对你有用。是的,谢谢伊万,这个例子很有用!我会发布一个我所做的事情的答案,希望它能帮助其他人。
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>" );
        }