포스트 컨텐츠에서 WordPress 숏코드 속성을 추출하는 방법
워드프레스의 내 게시물에는 알 수 없는 유형의 숏코드가 있습니다.my_player
갈고리를 만들고 정확하게 추가한 것입니다.컨텐츠와 쇼트코드명에 전달할 수 있는 워드프레스 함수의 종류가 있는지 궁금합니다. 속성명에 따라 색인화된 속성을 가진 일치된 쇼트코드 배열을 제공할 수 있습니다.아래에 있는 내 코드 같은 것들...
$matches = get_shortcode_matches($content, "my_player");
for($i = 0; $i < sizeof($matches); $i++)
{
$title = $matches[$i]['title'];
$mp3 = $matches[$i]['mp3'];
$soundcloud = $matches[$i]['soundcloud'];
}
당신이 쇼트코드를 위한 후크를 만들 때, 나는 그것을 알고 있습니다.add_shortcode()
함수는 위의 제가 가지고 있는 것처럼 지수화된 값을 사용할 수 있지만 나중에 루프 밖에서 접근할 수 있는 함수가 필요합니다.워드프레스에 그런 기능이 있습니까?
이를 수행하는 데는 여러 가지 방법이 있습니다. 1.위와 같이 자신의 토막글을 작성하고 "mu-plugins(뮤 플러그인)" 폴더에 다음을 삽입합니다.
// [myplayer attr="your-value"]
function myplayer_func($atts) {
extract(shortcode_atts(array(
'title' => 'something',
'mp3' => 'another something',
'soundcloud' => 'something else',
), $atts));
return "attr= {$attr}";
}
add_shortcode('myplayer', 'myplayer_func');
그리고나서
[myplayer title="something" mp3="another something" soundcloud="something else"]
하위 도메인을 포함한 모든 게시물에서. 2.Shortcoder 및 Global Content Blocks와 같은 플러그인을 사용할 수 있습니다.
저는 당신이 기존의 행동을 사용해서는 안 된다고 생각합니다.[shortcode_parse_atts]에 연결된 이벤트가 없습니다.사용자가 할 수 있는 유일한 방법은 add_action/global value입니다. [add_shortcode]와 관련된 모든 함수/메소드에서.
다음과 같은 것:
function doShortCode($atts, $content=null){
global $my_shortcode_storage;
$my_shortcode_storage['my_shortcode_1'][] = $atts;
}
저도 아무것도 찾을 수가 없어서 직접 만들었습니다.우선 숏코드에서 속성을 제대로 꺼내기 위해 다음과 같은 함수를 만들었습니다.
function eri_shortcode_parse_atts( $shortcode ) {
// Store the shortcode attributes in an array here
$attributes = [];
// Get all attributes
if (preg_match_all('/\w+\=\".*?\"/', $shortcode, $key_value_pairs)) {
// Now split up the key value pairs
foreach($key_value_pairs[0] as $kvp) {
$kvp = str_replace('"', '', $kvp);
$pair = explode('=', $kvp);
$attributes[$pair[0]] = $pair[1];
}
}
// Return the array
return $attributes;
}
그런 다음 쇼트 코드의 모든 반복을 페이지에서 검색할 수 있도록 다음과 같은 기능을 만들었습니다.
function eri_get_shortcode_on_page( $post_id, $shortcode ) {
// Get the post content once
$content = get_the_content( null, false, $post_id );
// $content = apply_filters( 'the_content', get_the_content( null, false, $post_id ) ); // Alternative if get_the_content() doesn't work for whatever reason
// Double check that there is content
if ($content) {
// Shortcode regex
$shortcode_regex = '/\['.$shortcode.'\s.*?]/';
// Get all the shortcodes from the page
if (preg_match_all($shortcode_regex, $content, $shortcodes)){
// Store them here
$final_array = [];
// Extract the attributes from the shortcode
foreach ($shortcodes[0] as $s) {
$attributes = eri_shortcode_parse_atts( $s );
// The return the post
$final_array[] = $attributes;
}
// Return the array
$results = $final_array;
// Otherwise return an empty array if none are found
} else {
$results = [];
}
// Return it
return $results;
} else {
return false;
}
}
이거 먹어봐요.
<?php do_shortcode($content); ?>
언급URL : https://stackoverflow.com/questions/20624785/how-to-extract-wordpress-shortcode-attributes-from-post-content
'programing' 카테고리의 다른 글
워드프레스에서 포스트아이디를 사용하여 포스트 썸네일을 얻는 방법? (0) | 2023.10.13 |
---|---|
XmlDocument를 사용하여 XML 문서를 만드는 방법은 무엇입니까? (0) | 2023.10.13 |
e.preventDefault()를 호출한 후 양식 제출 (0) | 2023.10.13 |
아이폰 시뮬레이터 리셋 방법 (0) | 2023.10.13 |
스레드에 바인딩된 최대 절전 모드 세션이 없으며 구성에서는 여기서 트랜잭션이 아닌 세션을 생성할 수 없습니다. (0) | 2023.10.08 |