J'aime produire et styler dans un shortcode, mais le contenu obtenu correspond au contenu d'une page, c'est donc un style comme celui-ci.
<p>2012-12-12</p>
<p>2012-6-23</p>
<p>2012-7-3</p>
j'aime pouvoir avoir SEULEMENT la date de valeur dans un tableau pour pouvoir le sortir dans une liste désordonnée après
comment est-ce que je fais cela (dépouillez le p et mettez-le dans un tableau?
un code:
//Add a SHORTCODE to get date listing
add_shortcode ('getdate','get_date_listing');
function get_date_listing ($att) {
$req_id = 901;
$post = get_page($req_id);
$content = apply_filters('the_content', $post->post_content);
$contentarray = explode( '\n', $content );
echo ($contentarray[0]);
//var_dump ($contentarray);
//return $content;
}
Tout d'abord, vous devez supprimer les balises de paragraphe ajoutées par le filtre wp_autop
. Il y a une autre réponse qui couvre assez bien cette question: Existe-t-il une fonction uw-wp_autop?
Je vais changer un peu la fonction pour nos besoins (basé sur l'exemple de marquage que vous avez donné):
function reverse_wpautop( $s ) {
// Strip newlines
$s = str_replace( "\n", "", $s );
// Strip all <p> tags
$s = str_replace( "<p>", "", $s );
// Replace </p> with a known delimiter
$s = str_replace( "</p>", "::|::", $s );
return $s;
}
Si tout fonctionne correctement, cela devrait convertir votre balise de:
<p>2012-12-12</p>
<p>2012-6-23</p>
<p>2012-7-3</p>
À:
2012-12-12::|::2012-6-23::|::2012-7-3::|::
Si vous faites une scission maintenant, vous allez vous retrouver avec un élément vide supplémentaire dans votre tableau. Pensez donc à prendre une sous-chaîne avant de scinder:
function split_delimited_string( $s ) {
// Take a substring, removing the final 5 characters (::|::)
$s = substr( $s, 0, -5 );
return explode( "::|::", $s );
}
voici le code de travail final:
//Add a SHORTCODE to get date listing
add_shortcode ('getdate','get_date_listing');
function get_date_listing ($att) {
$outputtvar = '';
// set the default timezone to use. Available since PHP 5.1
date_default_timezone_set('America/Montreal');
//ID of the post containing DATE LIST
$req_id = 901;
$post = get_page($req_id);
$content = apply_filters('the_content', $post->post_content);
// Strip all <p> tags
$content = str_replace( "<p>", "", $content );
// Replace </p> with a known delimiter
$content = str_replace( "</p>", "|", $content );
//Separate de dates
$contentarray = explode( '|', $content );
//remove the last empty date
unset($contentarray[count($contentarray)-1]);
if (qtrans_getLanguage() == 'fr') { setlocale(LC_ALL, 'fr_CA'); $datesetting = "%A, %e %B, %G"; }
if (qtrans_getLanguage() == 'en') { setlocale(LC_ALL, 'en_US'); $datesetting = "%A, %B %e, %G";}
//prepare the outputt
$outputtvar .= '<ul>';
foreach ($contentarray as $key => $value) {
$timestamp = strtotime($value);
$localdate = strftime($datesetting,$timestamp);
$localdate = utf8_encode($localdate);
$outputtvar .= '<li>' . $localdate . '</li>';
}
$outputtvar .= '</ul>';
return $outputtvar ;
}