source

워드프레스:기본 메뉴 항목에 URL GET 매개 변수를 추가하려면 어떻게 해야 합니까?

nicesource 2023. 3. 20. 23:20
반응형

워드프레스:기본 메뉴 항목에 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 콜에서 부울값을 전달하려고 하고 있다는 것입니다.homeclickGET 요구는 데이터가 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

반응형