Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  9 8200
Hei Folkens.


Jeg holder nå på med en plugin her som skal brukes for flere prosjekter.
Jeg har da en CPT (Custom post type) satt opp som man skal opprette forskjellig i.

Her i CPT'en skal vi da bruke shortcodes for å vise informasjonen fra denne "posten" på en annen side.


La oss si du legger til et bildegalleri, dette galleriet vil du vise på f.eks forsiden. Du bruker shortcoden som er lagt til på CPT'en for å vise innholdet.


Denne shortcoden skal vises med en gang man er inne i posten. Man kan se tittelen man kalte f.eks galleriet og shortcoden ved siden av som et eget felt. Denne koden skal genereres automatisk når en ny post opprettes.



Er det noen som har litt peiling på hvordan dette gjøres? Har holdt på å søkt via google i ca 1 time nå, men klarer ikke å finne noe annet enn hvordan man oppretter en shortcode på normal måte.

Hvis dere er usikker på hva jeg mener så er det bare å spørre.
Lenge siden jeg har jobbet med dette nå, men tror det skal være ganske rett frem med https://codex.wordpress.org/Shortcode_API

F.eks:

Kode

[include id="123" type="gallery"]
Kan lages med:

Kode

function fancy_include_func( $atts ) {
  $attributes = shortcode_atts([
    'id' => '',
    'type' => 'gallery', // sette gallery som default f.eks
  ], $atts);

  // Hent cpt med $attributes['id']
  // Velg del av cpt med $attributes['type']
  return ''; // generer og returner markup.
}
add_shortcode( 'include', 'fancy_include_func' );
Aha ok.

Så da må jeg bare kjøre den der, loope igjennom CPT, og display shortcode i fronten ved tittel i loopen. Det virker ikke så ille
Ok.

Nå har jeg testet litt og laget en funksjon i en egen fil som heter generate-shortcode.php i plugins mappa mi.
Inne i denne fila lager jeg da en funksjon som skal vise html og loope igjennom bilder fra et ACF galleri felt.

Nå er det første gang jeg lager en plugin fra scratch, så vet ikke helt hva jeg gjør feil her, men når jeg tester det jeg har så vises bildene i back-end og jeg får ikke publisert "siden" jeg har lagt shortcoden i.

Koden er en simpel funksjon med:

Kode

echo "<div class='image-gallery'><img src='blablabla' class='img'</div>";
La til denne koden bare for å teste og bildet vises bare i back-end. Er det noe ekstra jeg må gjøre for at dette skal fungere som det skal?
Jeg skjønner ikke helt hva problemet er nå, er det selve shortcoden som ikke fungerer (at den ikke blir byttet ut med innholdet ditt) eller er det noen annet du gjør som ikke fungerer?
Hei Yochi.

Shortcoden fungerer tydeligvis, men ikke på forsiden. Det virker som shortcoden viser innholder i back-end i siden på en måte hvis du skjønner.
Kan legge ved bilde om ønskelig. Men jeg får ikke publisert siden med shortcoden, da får jeg bare meldingen: "En feil har skjedd."
"En feil har skjedd" tyder nok på at noen krasjer i PHP. Jeg skjønner ikke helt dette med backend så gjerne forklar den litt

Du må passe på at teksten du viser på forsiden kjøres gjennom riktig filter/funksjon, slik at logikken som bytter ut shortcoden med innhold trigges.

Kode

function display_gallery_shortcode() {

		$postID = 84;


		echo '<div class="gallery_container">
				<h2 class="gallery_title">' . the_title() . '</h2>
				<div class="gallery_images">';

			$images = get_field('images', $postID);

			foreach($images as $img) :
				echo "<img src='" . $img . "' class='image'>";
			endforeach;

		echo '</div></div>';
	};

	add_shortcode( 'gallery', 'display_gallery_shortcode' );

Ok. Så dette er koden min.
Jeg går inn på "Sider" og oppretter en ny side jeg da kaller "Test" og limer inn shortcoden [gallery] i contenten her.

Dette fungerer om jeg bare bruker en echo "Hello" f.eks med samme kode, men med en gang jeg kjører mer php inni her så får jeg feil.


Når jeg mener back-end så er det sånn at istedenfor at den viser meg tekstfeltet, tittel etc der jeg kan fylle ut informasjon, så fylles hele skjermen med bildene som ligger i "galleri".
Jeg ser ikke noe umiddelbart feil i koden din, så du må nesten ta det steg for steg. Funker det å bare printe

Kode

the_title()
?

Om det funker prøv med bildene. Kan være greit å stille inn php til å vise feilmeldinger på skjermen.
Har satt php til å vise feilmeldinger, men får ingen feilmelding, så ser liksom ikke ut som det er noen feil som registreres her.
the_title() tror jeg fungere. Skal sjekke når jeg kommer hjem fra jobb.