저는 현재 [뉴스 레터] 단축 코드를 사용할 수있는 간단한 플러그인을 WordPress에 만들고 있습니다. 단축 코드는 정의 할 수있는 많은 특성을 가지고 있으므로 $ atts 배열에 모두 들어 있습니다.정의 된 함수 밖의 변수에 어떻게 액세스합니까?
이제 버튼의 look-n-feel을 정의하는 속성이 필요합니다. 이를 위해 "채우는"CSS를 태그에 추가하고 싶습니다. 이렇게하려면 add_action('wp_head', 'append_css_to_head')
을 사용하고 있는데, add_action
은 show_newsletter_signup_btn()
함수 내에서 전혀 실행되지 않는 것처럼 보이지 않으므로 작동하지 않습니다.
그래서 내가 대신 함수의 add_action('wp_head', 'append_css_to_head')
외부 퍼팅 시도, 그리고 그것을 잘 화재,하지만 단축 코드를 통해 설정 한 변수들은에 정의 된 함수의 외부에서 사용할 수 없습니다.
을 그래서 본질적으로 내가 묻는 바 : 어떻게이 변수들을 함수에서 꺼내야합니까??
아래 코드에서 알 수 있듯이 이미 $ GLOBALS을 사용하고 있습니다 (이 방법은 모범 사례는 아니지만 다른 방법은 모르겠다).하지만 도움이되지 않습니다. .
이 사이트의 많은 스레드를 읽었지만 나에게 도움이되는 해결책이 포함 된 솔루션을 찾을 수 없었습니다.
아래 코드를 참조하십시오.
<?php
add_shortcode('newsletter', 'show_newsletter_signup_btn');
function show_newsletter_signup_btn($atts) {
$atts = shortcode_atts(
array(
'link_text' => '',
'text_color' => '#fff',
'border_color' => '#e02d7f',
'background_color' => '#e02d7f',
'bg_gradient_color1' => '#e02d7f',
'bg_gradient_color2' => '#a31c57',
'hover_text_color' => '#fff',
'hover_border_color' => '#e02d7f',
'hover_background_color' => '#e7599a',
'hover_bg_gradient_color1' => '#e7599a',
'hover_bg_gradient_color2' => '#cf236e'
),
$atts
);
// Requirements:
$active_link = '/newsletter';
$link_text = $atts['link_text'];
// Colors:
$GLOBALS['nl_text_color'] = $atts['text_color'];
$GLOBALS['nl_border_color'] = $atts['border_color'];
$GLOBALS['nl_background_color'] = $atts['background_color'];
$GLOBALS['nl_bg_gradient_color1'] = $atts['bg_gradient_color1'];
$GLOBALS['nl_bg_gradient_color2'] = $atts['bg_gradient_color2'];
$GLOBALS['nl_hover_text_color'] = $atts['hover_text_color'];
$GLOBALS['nl_hover_border_color'] = $atts['hover_border_color'];
$GLOBALS['nl_hover_background_color'] = $atts['hover_background_color'];
$GLOBALS['nl_hover_bg_gradient_color1'] = $atts['hover_bg_gradient_color1'];
$GLOBALS['nl_hover_bg_gradient_color2'] = $atts['hover_bg_gradient_color2'];
function append_css_to_head() {
echo '<style type="text/css">
a.newsletter-button {
font-size: 170%;
font-weight: 100;
line-height: 1.8em;
display: block;
text-transform: uppercase;
text-align: center;
margin: 1em 0;
-webkit-transition: .5s all ease;
-moz-transition: .5s all ease;
transition: .5s all ease;
color: '.$GLOBALS['nl_text_color'].';
border: 1px solid '.$GLOBALS['nl_border_color'].';
background: '.$GLOBALS['nl_background_color'].';
background: linear-gradient(to bottom,'.$GLOBALS['nl_bg_gradient_color1'].' 0,'.$GLOBALS['nl_bg_gradient_color2'].' 100%)
}
a.newsletter-button::after {
content: url(' .plugin_dir_url(__FILE__). 'img/arrow.svg);
height: 0.8em;
width: 0.8em;
display: inline-block;
vertical-align: middle;
margin-left: 0.3em;
margin-top: -0.1em;
line-height: 0em;
-webkit-transition: .5s all ease;
-moz-transition: .5s all ease;
transition: .5s all ease;
}
a.newsletter-button:hover {
color: '.$GLOBALS['nl_hover_text_color'].';
border: 1px solid '.$GLOBALS['nl_hover_border_color'].';
background: '.$GLOBALS['nl_hover_background_color'].';
background: linear-gradient(to bottom,'.$GLOBALS['nl_hover_bg_gradient_color1'].' 0,'.$GLOBALS['nl_hover_bg_gradient_color2'].' 100%)
}
a.newsletter-button:hover::after {
-webkit-transform: translateX(0.3em);
transform: translateX(0.3em);
}
</style>';
}
add_action('wp_head', 'append_css_to_head');
$output = '
<div class="newsletter-signup">
<a class="newsletter-button" href="' . $active_link . '">' .$link_text. '</a>
</div>';
return $output;
}
편집 : 그리고 그래, 내가 거기에 워드 프레스 특정 코드이 내이지만, 내 질문이 느낌, 주로 PHP에 관한 알고있다.
왜 중첩 기능을 사용합니까? –
@ MarkBaker 원래 단축 코드 기능 –