WordPress PHP функция - PullRequest
       5

WordPress PHP функция

0 голосов
/ 17 мая 2011

У меня есть эта функция php в WordPress

function includePosts ($content = '') { 
    preg_match_all('/(?<=\\[\\[)\\d+?(?=\\]\\])/', $content, $matches, PREG_PATTERN_ORDER);
    $numMatches = count($matches[0]);
    for ($i = 0; $i < $numMatches; $i++) {
        $postId = $matches[0][$i];
        $post= get_post($postId);
        $linkToPost = '<a href="'.get_permalink($postId).'">';  
        $postTitle = $post->post_title;
        $postTitleText = "<li> $linkToPost$postTitle</a></li>";
        $content = str_replace("[[$postId]]", $postTitleText, $content);
    }
    return $content;
}
//  add_action('admin_menu', 'addAdminPage');
add_filter('the_content', 'includePosts', 1);

. Это значит, что нужно вывести шорткод со страницы WordPress, который будет идентификатором поста и отображает заголовок этого поста между <li>..<li> Всехорошо .. ну не совсемЯ хочу, чтобы все <li> ... </li> внутри одного <ul>...</ul>.Это возможно в этой функции?


jeremysawesome, одна вещь, которую я забыл упомянуть, return $content возвращает не только <li>, но и содержимое страницы, где находится шорткод, но спасибо заваше время.

Tristar Web Design, ваше решение действует странно, я получаю что-то вроде этого:

<ul>

   <li>...</li>

   <li>...</li>

      <ul>

        <li>...</li>

        <li>...</li>

     </ul>
</ul> 

Я действительно не понимаю

Ответы [ 2 ]

1 голос
/ 18 мая 2011

Просто выстрел в темноте. Если вы замените свое заявление о возврате на приведенное ниже, оно выполнит то, что вам нужно?

return "<ul>$content</ul>";
0 голосов
/ 18 мая 2011

Примерно так может работать:

function includePosts ($content = '') { 
    preg_match_all('/(?<=\\[\\[)\\d+?(?=\\]\\])/', $content, $matches, PREG_PATTERN_ORDER);
    $numMatches = count($matches[0]);
    for ($i = 0; $i < $numMatches; $i++) {
        $postId = $matches[0][$i];
        $post= get_post($postId);
        $linkToPost = '<a href="'.get_permalink($postId).'">';  
        $postTitle = $post->post_title;
        $ul = ($i == 0) ? '<ul>' : '';
        $endul = ($i == $numMatches) ? '</ul>' : '';
        $postTitleText = "$ul<li> $linkToPost$postTitle</a></li>$endul";
        $content = str_replace("[[$postId]]", $postTitleText, $content);
    }
    return $content;
}
//  add_action('admin_menu', 'addAdminPage');
add_filter('the_content', 'includePosts', 1);

Не уверен на 100%, что это сработает, но попробуйте!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...