Wordpress 테마를 만들고 있는데 사용자 정의 단축 코드가 있습니다. 짧은 코드는 이미지가 포함 된 일부 콘텐츠로 둘러 쌉니다. 단축 코드는 DOMDocument를 사용하여 이미지의 src를 추출하고이 URL을 사용하여 새 DIV에 대한 배경 이미지로 만듭니다.PHP DOMDocument 작업은 로컬에서 실행될 때 예상 값을 반환하지만 서버에서 페이지가 실행될 때 비어 있습니다.
다음은 관련 코드입니다 :
//find image src
$html = do_shortcode($content);
$doc = new DOMDocument();
libxml_use_internal_errors(true);
$doc->loadHTML($html, LIBXML_HTML_NOIMPLIED | LIBXML_HTML_NODEFDTD);
$xpath = new DOMXPath($doc);
$src = $xpath->evaluate("string(//img/@src)"); # "/images/image.jpg"
echo '<script>console.log('.'"Source: '.$src.'");</script>';
$overlay_html = '';
foreach($xpath->evaluate("//*[contains(@class, 'sp-img-overlay')]") as $childNode) {
$overlay_html .= $doc->saveHtml($childNode);
}
//removes empty p tags from content
$content = do_shortcode($content);
$content = force_balance_tags($content);
$content = preg_replace('#<p>\s*+(<br\s*/*>)?\s*</p>#i', '', $content);
//removes the actual images and captions
$just_text = $content;
$just_text = preg_replace('#(<figure.*?>).*?(</figure>)#', '', $just_text);
$just_text = preg_replace("/<img[^>]+\>/i", "", $just_text);
//build output
//make src captured earlier the background image.
$output = '<div class="section-pairing full-bleed-mobile">';
$output .= '<div class="section-pairing-img full-bleed-mobile '.$img_side.' '.$values['mobile_img_size'] .'" style=" background-image:url('. $src .')">';
$output .= $overlay_html;
$output .= '</div>';
$output .= '<div class="section-pairing-text '.$text_side.'">';
$output .= $just_text;
$output .= "</div>";
$output .= "</div>";
return $output;
내가 내 로컬 dev에 환경이 실행, 그 콘솔 로그. . .
echo '<script>console.log('.'"Source: '.$src.'");</script>';
. . . 이미지의 올바른 경로를 반환하고 단축 코드가 의도 한대로 작동합니다. 그러나 서버로 마이그레이션 할 때 페이지의 다른 모든 항목은 올바르게 작동하지만이 단축 코드는 작동하지 않으며 콘솔 로그는 URL없이 "원본 :"을 반환하고 이미지가 없습니다.
저는 웹 개발에 익숙하지 않고 DOMDocument를 처음 사용하기 때문에이 작업을 수행하는 방법에 대한 제안 사항에 만족할 것입니다.