워드프레스:기본 메뉴 항목에 URL GET 매개 변수를 추가하려면 어떻게 해야 합니까?
Wordpress의 메인 메뉴 항목 중 하나에 URL GET 파라미터를 추가하려고 합니다.그래서 제 접근법은 메뉴 항목에서 클릭 이벤트를 검출하고 필요에 따라 전달된 값을 처리하는 파라미터를 AJAX를 통해 제 php 페이지로 전달하는 것이었습니다.
주요 질문은 코드를 보면 왜 작동하지 않는가 하는 것입니다.javascript에 의존하지 않고 WordPress에서 이를 수행하는 더 좋은 방법이 있을까요?
javascript는 다음과 같습니다.
<script type="text/javascript">
$(document).ready(function() {
$("#menu-item-128").click(function() {
$.ajax({
url: 'homepage.php',
type: "GET",
data: ({ homeclick = true }),
success: function() {
alert("success!");
}
});
});
});
</script>
제 PHP는 다음과 같습니다.
$homeclick = $_GET['homeclick'];
if ( !isset( $_COOKIE['hs_user'] ) ) {
get_header();
} elseif (isset( $_COOKIE['hs_user'] ) && $homeclick == true ) {
get_header();
} else {
// Do Something else
header('Location: homepage-returning-users');
}
필터 훅wp_get_nav_menu_items
를 사용하여 탐색 메뉴를 조작합니다.그post_title
예에서 사용되는 것은 게시물/페이지가 아닌 메뉴(네비게이션 라벨)의 제목입니다.
이 코드를 드롭합니다.functions.php
파일, 조정post_title
그리고.?my_var=test
니즈에 맞게.이 점에 주의해 주십시오.functions
독자적인 플러그인을 작성하는 것입니다.
add_filter( 'wp_get_nav_menu_items','nav_items', 11, 3 );
function nav_items( $items, $menu, $args )
{
if( is_admin() )
return $items;
foreach( $items as $item )
{
if( 'Home' == $item->post_title)
$item->url .= '?my_var=test';
}
return $items;
}
[어피아란스]에서 커스텀 메뉴를 사용하는 것을 추천합니다.>메뉴. get 매개 변수를 사용하여 사용자 지정 URL을 유지할 수 있습니다.워드프레스 메뉴는 이쪽에서 보실 수 있습니다.
문제는 Ajax 콜에서 부울값을 전달하려고 하고 있다는 것입니다.homeclick
GET 요구는 데이터가 URL을 통해 전달되기 때문에 단순히 텍스트를 사용하기 때문에 논리/부울 유형을 원하는 경우 텍스트에서 "true"와 "false" 중 하나를 사용할 수 있으며, 0과 1을 사용할 수도 있습니다.또한 구문 오류가 있습니다.
다음을 시도해 보십시오.
Ajax 콜에서 다음과 같이 구문을 수정하고 홈클릭을 "true"로 설정합니다.data: ({ homeclick: 'true' }),
.
그리고 php에서 변수의 if 조건을 변경합니다.$homeclick
다음과 같습니다.$homeclick == 'true'
.
부울을 사용하는 경우는, POST 방식의 사용을 검토해 주세요.
그것은 Brasofilo의 포크로, 나에게 딱 맞습니다. (이 코드를 테마 함수에 넣으세요.php)
// Transform title attributes to parameters
add_filter( 'wp_get_nav_menu_items','nav_items', 11, 3 );
function nav_items( $items, $menu, $args )
{
if( is_admin() )
return $items;
foreach( $items as $item )
{
if ($item->attr_title != "") $item->url .= '#' . $item->attr_title;
}
return $items;
}
여기서 하고 있는 것은 메뉴 항목의 속성을 가져와 앵커 이름으로 변환하는 것입니다.이렇게 하면 다음과 같은 URL을 얻을 수 있습니다.
그 후 jQuery 매직으로 앵커로 점프(프로그레시브 스크롤 다운)하면 됩니다.(코드펜)
'Title Attribute(제목 속성)' 입력 필드가 표시되지 않으면 Wordpress 관리 메뉴의 상단 "Screen Options(화면 옵션)" 버튼에 있는 옵션을 선택하십시오.
언급URL : https://stackoverflow.com/questions/18731750/wordpress-how-can-i-add-url-get-parameter-to-my-main-menu-items
'source' 카테고리의 다른 글
Safari 11.1: ajax/X입력[type=file]이(가) 비어 있으면 HR 양식 제출이 실패함 (0) | 2023.03.20 |
---|---|
React.useMemo를 사용한 비동기 호출 (0) | 2023.03.20 |
문자열이 유효한 JSON인지 확인하는 방법 (0) | 2023.03.20 |
파워 쿼리를 사용하여 뛰어난 성능을 발휘하는 Json (0) | 2023.03.20 |
각진 '='의 의미는 무엇입니까?JS 지시 격리 범위 선언? (0) | 2023.03.20 |