J'utilise 2 plugins dans mon blog wordpress - WP-Members et Partager un dossier Dropbox . Je veux faire quelque chose comme ça:
[dropbox-foldershare-hyno link="[wp-members field="some_link"]" ver_como='lista']
Est-ce possible?
Vous ne pouvez pas utiliser des codes courts comme celui-ci. L'analyseur ne lirait pas cela comme vous le souhaitez.
Mais il existe une solution de contournement: piratez le shortcode dropbox-foldershare-hyno
, exécutez la fonction de rappel pour le wp-members
sur le lien et transmettez le résultat au rappel dropbox-foldershare-hyno
d'origine.
Exemple de code, non testé:
// wait until the other plugins are loaded
add_action( 'wp_loaded', 'wpse_100100_shortcode_magic' );
function wpse_100100_shortcode_magic()
{
add_shortcode(
'dropbox-foldershare-hyno',
'wpse_100100_shortcode_replacement'
);
}
function wpse_100100_shortcode_replacement( $atts )
{
global $bvwidget;
if ( isset ( $atts['link'] ) )
$atts['link'] = wpmem_shortcode( array( 'field' => $atts['link'] ) );
return $bvwidget->replace_shortcode( $atts );
}
Vous pouvez maintenant utiliser le shortcode [dropbox-foldershare-hyno]
et transmettre une valeur pour l'attribut link
qui doit être convertie à partir des membres WP avant que Dropbox Folder Share ne le récupère.
Lorsque le plugin dropbox-foldershare-hyno
devient WordPress 3.6
ready, nous pouvons le faire:
add_filter('shortcode_atts_dfh','overwrite_dfh_atts',10,3);
function overwrite_dfh_atts($out, $pairs, $atts){
if($atts['link'])
$out['link'] = do_shortcode( sprintf( '[wp-members field="%s"]', esc_attr( $atts['link'] ) ) );
return $out;
}
pour écraser l'attribut link du shortcode:
[dropbox-foldershare-hyno link="some value for the wp-member field attribute"]
shortcode, si le filtre shortcode_atts_{$shortcode}
correspondant est shortcode_atts_dfh
.
Vous pouvez en lire plus à ce sujet ici .
Les codes courts imbriqués ne fonctionnent que dans certaines circonstances spécifiques:
do_shortcodes()
sur le contenu renvoyé. (ref: API Shortcodes: Shortcodes imbriqués )Donc, dans votre exemple, la réponse est probablement non, en raison du premier point ci-dessus. Mais pour être sûr, vous devrez vérifier la documentation de vos plugins spécifiques pour voir si l'auteur donne d'autres options sur la façon d'utiliser leurs codes abrégés.