• Resolved ba2018

    (@ba2018)


    Ich würde gerne mit dem Shortcode [dc-hide-content] [/dc-hide-content] in WordPress einen Loop umschlie?en.

    [[Kurze Erkl?rung:
    Wir haben das Plugin Woocommerce genutzt, um eine übersicht aller Impfstoffe einzustellen, die DocCheck geschützt sind. Das hat soweit funktioniert, obwohl das Plugin eigentlich nicht mit DocCheck arbeiten m?chte. Allerdings nur, wenn man die Impfstoffe direkt über die Seiten aufruft. Sobald man über Google auf einen Impfstoff kommt, ist er frei zug?nglich. Die einzelnen Produktseiten werden wohl nicht als Zugeh?rig zu den geschützten Seiten erkannt. ]]

    Nun wollte ich über die Template-Seite den entsprechenden Loop, der die Produkte aufruft, einfach mit dem Shortcode umschlie?en. Mit der Funktion <?php echo do_shortcode (?[dc-hide-content]“); ?> k?nnte das funktionieren (Shortcodes werden so erkannt, das Login-Feld konnte ich einbinden).

    Aber hier erkennt das Template den abschlie?enden Shortcode <?php echo do_shortcode (?[/dc-hide-content]“);?> nicht. Der wird als Text einfach unten auf der Seite ausgegeben.

    The page I need help with: [log in to see the link]

Viewing 1 replies (of 1 total)
  • Plugin Author antwerpes

    (@antwerpes)

    Hallo ba2018,

    Entschuldige die sp?te Antwort, wahrscheinlich hat sich die Frage mittlerweile erledigt. In der WordPress Dokumentation – sehr weit unten – ist ein recht gutes Beispiel, wie do_shortcode verwendet werden kann um Inhalte einzuspeisen.

    https://developer.www.ads-software.com/reference/functions/do_shortcode/

    echo do_shortcode( '[iscorrect]' . $text_to_be_wrapped_in_shortcode . '[/iscorrect]' );

    Hier mal ein Beispiel anhand der index.php im Theme twentyseventeen, wie man das mit der Loop in WordPress verbinden k?nnte:

    <?php 
    
    			//  Turn on output buffering
    			ob_start();
    			
    			// Do your loop
    			if ( have_posts() ) :
    				while ( have_posts() ) :
    					the_post();
    
    					get_template_part( 'template-parts/post/content', get_post_format() );
    				endwhile;
    
    				the_posts_pagination(
    					array(
    						'prev_text'          => twentyseventeen_get_svg( array( 'icon' => 'arrow-left' ) ) . '<span class="screen-reader-text">' . __( 'Previous page', 'twentyseventeen' ) . '</span>',
    						'next_text'          => '<span class="screen-reader-text">' . __( 'Next page', 'twentyseventeen' ) . '</span>' . twentyseventeen_get_svg( array( 'icon' => 'arrow-right' ) ),
    						'before_page_number' => '<span class="meta-nav screen-reader-text">' . __( 'Page', 'twentyseventeen' ) . ' </span>',
    					)
    				);
    
    			else :
    
    				get_template_part( 'template-parts/post/content', 'none' );
    
    			endif;
    
    			// Get current buffer contents and delete current output buffer
    			$hidden_content = ob_get_clean();
    
    			// Display content wrapped in doccheck shortcode
    			echo do_shortcode('[dc-hide-content]' . $hidden_content . '[/dc-hide-content]'); 
    
    			?>

    Für den Fall, dass kein User eingeloggt ist würde beim Shortcode ein leerer string zurückgegeben werden. Falls man dann einen anderen Text angezeigt haben m?chte müsste man das noch zus?tzlich abfangen.

    Optimal w?re natürlich, wenn wir unsererseits eine Methode implementieren, über die im Theme per if/else abgefragt werden kann ob ein DocCheck User eingeloggt ist, sodass das alles etwas einfacher geht. Wir notieren uns das!

    antwerpes

Viewing 1 replies (of 1 total)
  • The topic ‘dc-hide-content in php’ is closed to new replies.