2011-05-17 4 views
0

J'ai cette fonction php dans wordpressfonction 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); 

Ce que cela fait est d'amener le shortcode de la page wordpress, Wich serait un identifiant de poste et affiche le titre de ce poste entre <li>..<li> Tout ok .. bien pas tout à fait. Je veux tous les <li> ... </li> à l'intérieur d'un <ul>...</ul>. Est-ce que c'est possible dans cette fonction?


jeremysawesome, une chose que j'oublié de mentionner return $content renvoie non seulement le <li> mais aussi le contenu de la page où est shortcode, mais je vous remercie de votre temps.

Tristar Web Design, votre solution agit étrange, je reçois quelque chose comme ceci:

<ul> 

    <li>...</li> 

    <li>...</li> 

     <ul> 

     <li>...</li> 

     <li>...</li> 

    </ul> 
</ul> 

Je ne comprends vraiment pas

Répondre

1

Juste un coup de feu dans l'obscurité. Si vous remplacez votre déclaration de retour par celle ci-dessous, accomplit-elle ce que vous voulez?

return "<ul>$content</ul>"; 
+0

Cela ne fonctionnerait pas, cela encapsulerait le contenu entier et les éléments de liste dans un ul –

0

Quelque chose comme cela pourrait fonctionner:

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); 

Non 100% sûr que cela fonctionnera, mais lui donner un essai!