我已经创建了一个元框,它采用用户可以提供的名称作为其帖子的附加名称。我想知道如何根据用户输入到元数据库中的名称自动创建菜单项,并将url设置为#PostName?
即使有人可以指导我从post屏幕上的metabox创建菜单项的正确方向,我也可以理解其余的内容。
EDIT: 我已经添加了一些额外的信息,因为我知道这似乎有点困惑的人谁知道我为什么要这个想法。
我正在用html5样板创建一个自定义主题。这是一个单页主题,用户通过添加帖子向页面添加部分。其原理是,用户将自定义名称添加到页面上的元框中,然后添加具有该名称的菜单项。由于我创建的元框已经在每个帖子的html中添加了一个ID和一个额外的ID标记,因此菜单的url将是#PostName。这样,当用户单击菜单项时,它将自动向右滚动到该部分。
在大多数主题中,导航菜单会将您带到不同的页面。由于我的主题只有一个页面主题,导航链接会将用户带到页面上的部分。我所要做的就是在主题中添加一些自动化,这样用户就不需要手动添加菜单项。
SO网友:montrealist
下面是我对这项任务的理解:获取帖子(您可以通过向查询中添加额外参数来以任何方式塑造它),对于每个帖子,获取其元框值(用您的键替换键),如果找到值,则将其添加到菜单的HTML中。
Note: 代码没有经过测试,它只是一个大纲。
$html = \'\';
$domain = \'your-domain\'; // http://codex.wordpress.org/Function_Reference/_e
$meta_key = \'your-meta-key\'; // TODO replace value with yours
$post_menu_items = get_posts( array(
\'post_type\' => \'post\',
\'post_status\' => array( \'publish\' ),
\'numberposts\' => -1
) );
if($post_menu_items){
$html .= \'<ul>\';
foreach ($post_menu_items as $key => $menu_item) {
$meta_title = get_post_meta($menu_item->ID, $meta_key, true);
if(!empty($current_meta)){
$html .=\'<li><a href="#\' . $meta_title . \'">\' . $menu_item->post_title . \'</a></li>\';
}
}
$html = \'</ul>\';
} else {
_e(\'No posts found.\', $domain);
}
echo $html;
想想看,你甚至可以避免
get_post_meta
通过提供
meta_key
参数输入到
get_posts
. 欢迎你尝试一下。