2013-12-17 1 views
5

В моих сообщениях на WordPress у меня есть неизвестное количество коротких кодов типа my_player, которые я создал и правильно добавил крючки. Мне было интересно, есть ли какой-либо тип функции WordPress, вы можете передать свой контент и имя короткого кода, и он может дать вам массив совпадающих коротких кодов с их атрибутами, индексированными по имени атрибута. Что-то вроде моего кода ниже ...Как извлечь атрибуты короткого кода WordPress из постсообщения

$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() вы можете использовать эти индексированные значения, как я выше, но мне нужно иметь функцию, которая может доступ к ним позже и снаружи цикла. Есть ли такая функция WordPress?

ответ

0

попробовать это,

<?php do_shortcode($content); ?> 
+2

Я уже использую те. Тем не менее это не помогает извлечь атрибуты и их значения. – jas7457

2

Есть несколько способов сделать это: 1. Напишите свой собственный фрагмент кода, как вы сделали выше, вставить следующее в ваших «мю-плагинов» папка

// [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

+0

Я сказал, что уже настроил крючки и функцию 'add_shortcode()'. Я знаю, что вы можете использовать эту информацию из этой функции, но я хочу иметь функцию, которая дает имя короткого кода, контент для поиска и возвращает массив пар имя-значение. Что-то похоже на мой код, написанный в моем оригинальном посте. – jas7457

+0

Использование функции horrible extract() не рекомендуется в стандартах кодирования WordPress. Просто так вы знаете. – redanimalwar

0

Я не думаю, что вы можете использовать существующие действия. [shortcode_parse_atts] не имеет прикрепленных к нему событий. Единственный способ, которым вы можете это сделать, это add_action/global ценный в каждой из ваших функций/методов [add_shortcode].

Что-то вроде:

function doShortCode($atts, $content=null){ 
    global $my_shortcode_storage; 
    $my_shortcode_storage['my_shortcode_1'][] = $atts; 
} 
Смежные вопросы