2015-01-15 2 views
0

저는 WordPress에 대한 도움이 필요합니다.같은 페이지에서 두 번 사용자 정의 단축 코드를 실행하십시오.

add_shortcode("archive", "archive_render"); 
function archive_render($atts) { 

extract(shortcode_atts(array(
    "rientro" => "no", 
    "year" => "", 
), $atts)); 

global $wpdb; 

$rientro == "si" ? $rientro = "yes" : "no"; 

$query = "SELECT event_name FROM wp_em_events WHERE EXTRACT(YEAR FROM event_end_date) = ".$year." AND event_end_date < CURDATE()"; 
$pasts_event = $wpdb->get_col($query); 

function get_pasts_event($pasts_event){ 

    foreach ($pasts_event as $past_event_slug) { 
     $output .= "<li><a href='".get_site_url()."/eventi/".$past_event_slug."'>$past_event_slug</a></li>"; 
    } 

    return $output; 
} 

$string = '[one_third last="'.$rientro.'" class="" id=""][accordian class="" id=""][toggle title="'.$year.'" open="no"]<ul>'.get_pasts_event($pasts_event).'</ul>[/toggle][/accordian][/one_third]'; 

echo do_shortcode($string); 

} 나는 현재 날짜와 비교하여 과거 날짜가 모든 이벤트를 검색 할

:

나는 특정 paramenter있는 테이블 안에 데이터의 목록을 검색하는 사용자 정의 단축 코드를 만들었습니다.

단축 코드를 페이지에 두 번 추가하면 첫 번째 단축 코드 만 작동하고 나머지 콘텐츠는 페이지가 멈 춥니 다.

누구든지이 문제를 해결할 수 있습니까? 문자열을 반환해야합니다

+1

이 페이지 정지의 나머지 부분 또는 두 번째 단축 코드의 단지 결과가 당신의 코드 배열을 다시 할 수 반향하지? 디버그 모드를 활성화 했습니까? 코드에 오류가있을 수 있습니다. http://codex.wordpress.org/Debugging_in_WordPress –

+0

짧은 코드는 콘텐츠를 출력하지 않아야합니다. 'get_posts_event' 함수를 shortcode 바깥으로 옮기고 echo가 돌아 오도록 변경하십시오. –

답변

0

워드 프레스 단축 코드는, 그것은 나를

function get_pasts_event($pasts_event){ 

    foreach ($pasts_event as $past_event_slug) { 
     $output .= "<li><a href='".get_site_url()."/eventi/".$past_event_slug."'>$past_event_slug</a></li>"; 
    } 

    return $output; 
} 

add_shortcode("archive", "archive_render"); 
function archive_render($atts) { 

    extract(shortcode_atts(array(
     "rientro" => "no", 
     "year" => "", 
     ), $atts)); 

    global $wpdb; 

    $rientro == "si" ? $rientro = "yes" : "no"; 

    $query = "SELECT event_name FROM wp_em_events WHERE EXTRACT(YEAR FROM event_end_date) = ".$year." AND event_end_date < CURDATE()"; 
    $pasts_event = $wpdb->get_col($query); 


    $string = '[one_third last="'.$rientro.'" class="" id=""][accordian class="" id=""][toggle title="'.$year.'" open="no"]<ul>'.get_pasts_event($pasts_event).'</ul>[/toggle][/accordian][/one_third]'; 

    return $string; 
} 
+0

도와 주셔서 감사합니다. 질문 : 왜 get_pasts_event() 함수 외부에 두는가? – Daniele

+0

왜냐하면 일반적으로 우리는 다른 함수 안에 함수를 선언해서는 안되는데, 이것은 오류를 생성하지는 않으며 main 함수가 2x 이상 호출되었을 때 그 함수를 다시 선언하는 것을 피하기 때문입니다. 내가 아는 바에 따르면 글로벌 기능에 대한 범위 지정은 없습니다. –