如何从wp数据库中获取NAV_MENU_ITEM_ID和SLUG

时间:2011-03-27 作者:Anjum

您好WordPress专家,请帮助我,我想通过给定一个页面模板(store.php)从wp数据库中获取nav\\u menu\\u item\\u id和slug这是一个页面模板,以及我们如何获取使用此页面模板的nave menu item id和slug

3 个回复
最合适的回答,由SO网友:MikeSchinkel 整理而成

你好@Anjum:

我认为功能get_nav_menu_id_by_page_template()你在找什么?您可以将此函数的代码放置在主题的functions.php 文件,或在.php 对于您正在编写的插件:

function get_nav_menu_id_by_page_template($template) {
  static $nav_menu_id;
  if (!isset($nav_menu_id)) {
    global $wpdb;
    $sql = <<<SQL
SELECT 
  menu.post_id AS menu_id
FROM 
  {$wpdb->postmeta} AS template 
  INNER JOIN {$wpdb->postmeta} AS menu_id ON menu_id.meta_key=\'_menu_item_object_id\' 
                                         AND menu_id.meta_value=template.post_id
  INNER JOIN {$wpdb->postmeta} AS menu ON menu_id.post_id=menu.post_id
WHERE 1=1
  AND menu.meta_key=\'_menu_item_object\' AND menu.meta_value=\'page\'
  AND template.meta_key=\'_wp_page_template\' AND template.meta_value=\'%s\'
SQL;      
    $nav_menu_id = $wpdb->get_var($wpdb->prepare($sql,$template));
  }
  return $nav_menu_id;
}
一旦你有了get_nav_menu_id_by_page_template() 函数,您可以在主题模板文件中调用它,如下所示:

<?php $nav_menu_id = get_nav_menu_id_by_page_template(\'store.php\'); ?>

SO网友:fuxia

多个页面可能使用同一模板。模板和页面或导航菜单项之间没有1:1的关系,因此您可能会取回多个项目。

模板和项目ID存储在表中postmeta. 寻找_menu_item_object_id_wp_page_template.

SO网友:Anjum


function getIdFromMeta( $meta_key, $meta_value ) {
    global $wpdb;
    $pid = $wpdb->get_var( $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta WHERE meta_value = \'$meta_value\' AND meta_key = \'$meta_key\' ORDER BY post_id DESC") );
    if( $pid != \'\' )
        return $pid;
    else 
        return false;
}
这对我来说很好这溶液给我Rochester Oliveira 我的问题stackoverflow谢谢Rochester Oliveira

这是回邮id,但我需要导航菜单id

结束

相关推荐

Corrupt Wordpress Database

我认为这是最奇怪的文字印刷问题。一个拥有大量帖子数据库的客户网站已经有了自己的想法。前一分钟一切似乎都很好,接下来的帖子、类别和标签都不见了。此时仪表板告诉我9个类别中有2309个帖子,但当我单击admin中的categories链接时,列表中没有任何帖子。我可以在admin中看到所有帖子,但尽管它们过去被分配到类别并列出标签,但现在它们都“未分类”,没有标签。很明显,wordpress数据库在某种程度上已经损坏,但从哪里开始尝试修复呢!?以下是我迄今为止测试的内容:插件–我关闭了所有当前的插件。主题–我