programing

Wordpress 3.0용 데이터베이스에서는 사용자 지정 메뉴가 어디에 저장됩니까?

fastcode 2023. 4. 5. 22:20
반응형

Wordpress 3.0용 데이터베이스에서는 사용자 지정 메뉴가 어디에 저장됩니까?

phpmyadmin에서 sql 데이터베이스를 검색하고 검색했지만 데이터베이스에 커스텀 메뉴가 저장되어 있는 위치를 찾을 수 없습니다.어디에 보관되어 있는지 아는 사람?기본적으로 만드는 데 시간이 오래 걸리는 큰 메뉴가 있습니다.현재 개발 중이며 실제 환경에서 다시 생성하는 것이 아니라 SQL을 복사하여 작동 여부를 확인하려고 합니다.감사합니다!

새 사용자 지정 메뉴가 추가되면 해당 항목이 여러 테이블에 추가됩니다.

  1. 테이블:_term_taxonomy기둥을 박고taxonomy및 가치nav_menu.
  2. 1부터)term_id표에도 기재되어 있습니다._terms관리 패널에 표시되는 메뉴 제목과 함께
  3. 테이블:_term_relationship포함하다term_texonomy_id1) 및 all object_id로의 접속을 확립하여 all object_id는 all에 링크됩니다._post테이블이 있다sub_menu아래 레벨의 메뉴입니다.
  4. 테이블:_postmeta각각의 메뉴와 서브메뉴에 관련된 모든 세부 정보가 포함됩니다.object_id부터_posts테이블.

네비게이션 메뉴 항목은 wp_posts 테이블에 저장됩니다.post_type = 'nav_menu_item'.

실제 메뉴 제목, ID 및 이름은 wp_terms 테이블에 저장됩니다.

나는 낡은 실타래를 치는 것을 싫어한다.하지만 만약 내가 답을 찾던 것처럼 누군가 이걸 마주치게 된다면WP 3.2post_type현재 메뉴가 호출됩니다.nav_menu_item에서wp_posts테이블이요. wp페이지에 그런게 없더라고요. 그들은 그냥 그걸 가지고 있었어요.nav_menu찾을 수 없었어요

커스텀 메뉴 링크는wp_postmeta아래 테이블로"meta_value"meta_key = _menu_item_url

저는 저처럼 우연히 이 게시물을 접하게 된 분들에게 보다 완전하고 최신의 답변을 드리고 싶었습니다.메뉴 항목을 수동으로 삽입하거나 업데이트하려는 경우 데이터베이스에서 확인/업데이트해야 하는 여러 위치가 있습니다.

첫 번째 단계는 메인 메뉴 컨테이너를 찾는 것입니다.이것은 다음 위치에 저장됩니다.wp_terms. 검색만 하면 됩니다.name메뉴명을 입력해 주세요.ID를 적어 둡니다.이 예에서는 다음과 같습니다.33마찬가지로 여기에 새 행을 삽입하여 새 메뉴를 만들 수 있습니다.민달팽이 안에 공간이 있으면 안 돼요.그냥 대체해 주세요.-대신.

이제 그 메뉴에서 항목을 찾을 수 있습니다.그것들은 에 저장되어 있습니다.wp_posts와 함께post_typenav_menu_item이 테이블에는 위의 ID와 연결된 항목이 없으므로 다음 주소로 이동해야 합니다.post_title새로운 메뉴 항목을 삽입하는 것이 목적이라면 phpMyAdmin을 사용하여 클릭하기만 하면 됩니다.Copy기존 항목에서 모든 메뉴 및 변경post_title그리고.post_name삽입한 아이템의 ID를 적어 둡니다.저는 9179입니다.또, 카피한 아이템의 ID(같은 메뉴로 카피한 아이템의 ID)도 적어 두면 좋을 것 같습니다.다음 단계에서 사용할 예정입니다.

다음 페이지로 이동합니다.wp_postmeta및 에서 검색합니다.post_id복사한 항목의 필드입니다.그러면 새 메뉴 항목에 대한 정보를 얻기 위해 입력해야 하는 모든 필드가 표시됩니다.phpMyAdmin을 사용하여 각 엔트리를 복사하고 필요에 따라 변경합니다. _menu_item_menu_item_parent,_menu_item_target,그리고._menu_item_classes변경해야 할 가능성이 가장 높은 필드입니다.그리고 새로운 아이템의 ID(9179)를 입력했는지 확인합니다._menu_item_object_id.

모두 생성되면 해당 메뉴 항목을 메뉴에 연결할 수 있습니다.우리는 이 모든 것을term_taxonomy_id부터wp_term_taxonomy검색만 하면 됩니다.term_id첫 번째 단계부터 아이디를 사용해서, 저는 33번입니다.term_taxonomy_id저도 33살이에요.아니요, 새 행을 삽입해야 합니다.wp_term_relationshipsobject_id ID와 ID(9179)가 .term_taxonomy_id방금 검색한 내용입니다(33).

새로운 아이템이 메뉴에 표시됩니다.

사용한 SQL 스크립트는 다음과 같습니다.

wp_term 테이블에서 메뉴를 가져옵니다.

SELECT * FROM wp_terms AS t LEFT JOIN wp_term_taxonomy AS tt ON tt.term_id = t.term_id WHERE tt.taxonomy = 'nav_menu'

term_id를 사용하여 연결된 다른 모든 테이블에서 모든 메뉴 제목/링크를 가져옵니다.내 생각에 이것은 끔찍한 관계형 데이터베이스이다.위의 쿼리에서 tt.term_id를 자신의 것으로 대체하면 됩니다.아래는 11입니다.

SELECT p.post_title, p.post_name, p.menu_order, pm.meta_value FROM wp_posts AS p LEFT JOIN wp_term_relationships AS tr ON tr.object_id = p.ID LEFT JOIN wp_term_taxonomy AS tt ON tt.term_taxonomy_id = tr.term_taxonomy_id INNER JOIN wp_postmeta AS pm ON p.Id = pm.post_id WHERE p.post_type = 'nav_menu_item' AND tt.term_id = 11 AND pm.meta_key = '_menu_item_url'

각 메뉴 항목은 투고 테이블에 저장되며, 이들 항목에 속하는 메뉴 계층/옵션/url 등은 포스트메타 테이블에 저장된다.포스트메타 테이블에서 포스트 테이블 항목에 속하는 post_id 열을 볼 수 있습니다.

$postId = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM `wp_postmeta` WHERE meta_key='_menu_item_object_id' AND `meta_value`='$id'"));
$postIdc = $wpdb->get_var($wpdb->prepare("SELECT post_id FROM `wp_postmeta` WHERE meta_key='_menu_item_object_id' AND `meta_value`='$a[1]'"));
$sql2 = "SELECT * FROM `wp_postmeta` WHERE meta_key='_menu_item_menu_item_parent' AND `meta_value`='$postId'";
$sql2c = "SELECT * FROM `wp_postmeta` WHERE meta_key='_menu_item_menu_item_parent' AND `meta_value`='$postIdc'";

언급URL : https://stackoverflow.com/questions/3767725/where-are-custom-menus-saved-in-the-database-for-wordpress-3-0

반응형