[Wordpress] custom posttype koppelen aan custom posttype

Pagina: 1
Acties:

Onderwerpen

Vraag


  • Hedva
  • Registratie: Augustus 2010
  • Laatst online: 15-09 14:16

Hedva

Blobfish

Topicstarter
Mijn vraag
Oke, hier komt het:

Ik heb een custom posttype "Boeken". Hier kan ik boeken aan toevoegen. Dat werkt prima.
Ook heb ik een custom posttype "Opdrachten". Hier kan ik opdrachten aan toevoegen. Dat werkt ook prima.

Nu wil ik in Opdrachten een metabox waar ik de boeken kan selecteren die bij de opdrachten horen. Zodat ik er daar 1 of meerdere selecteren. Een boek kan bij meerdere opdrachten horen. Een opdracht kan meerdere boeken hebben. Het liefst heb ik gewoon een lijst met checkboxen in Opdrachten waar ik bijhorende boeken kan aanvinken.

Nu dacht ik dat me dit wel zou lukken maar ik loop echt helemaal vast (en echt al dagen). Nu maak ik gebruik van een systeem 'LearnPress'. Dus toen dacht ik, als ik nou het zelfde systeem gebruik als hun opdrachten weer aan andere dingen koppelen, moet dat vast wel lukken. Maar daar raak ik al helemaal van in de knoop, want al die code is gewoon niet meer te volgen.

Zo zou ik het ongeveer willen hebben: (en ja dit is een mockup)
Afbeeldingslocatie: https://s15.postimg.org/m2q0mnhej/Screen_Shot_2016_08_25_at_23_14_14.png
Andere manier eventueel ook goed als een andere manier makkelijker zou zijn, zolang alle boeken maar ingeladen worden en aan te vinken zijn, zodat ze gekoppeld worden.


Nogmaals; Het lukt gewoon om opdrachten aan te maken, het lukt gewoon om boeken aan te maken. Maar om boeken en opdrachten aan elkaar te koppelen lukt me niet.
Is er iemand die een (vergelijkbaar) voorbeeld heeft om dit te doen? Of wel een goede tutorial weet waar dit in staat? Of me even zou kunnen helpen als het eventueel snel gedaan is? Ik stuur je echt alle bonbons op die ik kan vinden in de supermarkt als dit lukt.


Relevante software en hardware die ik gebruik
Wordpress
LearnPress

Wat ik al gevonden of geprobeerd heb
Echt letterlijk alles. Ik zie door het bos de bomen niet meer. Alle tutorials die ik volg zeggen alleen hoe ik custom post types aan maak. Maar niet hoe ik ze zo kan toevoegen. Zit echt met mn handen in het haar.


Edit Deel2:

Ik ben dichterbij dan ooit. Maar ergens nog zo ver weg. Het lukt me nu om boeken te koppelen. (YEEY!!, echt, denk na 3 weken? Ik ben blij).

Helaas kan ik echter alleen 1 boek aan 1 opdracht koppelen ( :( ).

Ik ben hier niet zo heel erg thuis in, en heb ook besloten om na dit, dit nooit meer te doen. Maar het volgende dus:

Ik ben toch verder gegaan met de code van LearnPress. Op dezelfde methode zoals hun dan Opdrachten aan Courses koppelen, heb ik geprobeerd om Boeken aan Opdrachten te koppelen (dat is dus nu gelult). Je kunt echter maar 1 Opdracht aan 1 Course koppelen (dat klopt ook). Maar daardoor kan ik ook maar 1 Boek aan 1 Opdracht koppelen, en dat is fout. Een boek moet aan meerdere opdrachten gekoppeld kunnen worden.

Code waar het om gaat overigens:
http://pastebin.com/7uucKYPy
Zie afbeelding voor verduidelijking:
Afbeeldingslocatie: https://s14.postimg.org/4ewjyml7x/Screen_Shot_2016_08_26_at_02_33_28.png

Mijn oorspronkelijke vraag is nu dus een beetje veranderd. Hoe zorg ik dat zo'n boek in meerdere Opdrachten terecht kan komen?

In $exclude worden (zover ik begrijp) alle id's in opgeslagen van boeken die vervolgens niet meer gebruikt mogen worden voor die Opdracht/les.

PHP:
224
225
226
227
228
229
230
$query_args = array(
      'post_type'      => 'lpr_book',
      'post_status'    => 'publish',
      'author'         => $current_user,
      'posts_per_page' => - 1,
      'post__not_in'   => $exclude_book
    );

Door de Wordpress post__not_in parameter. Maar door het gebruik van die andere wordt het er niet beter op. Iemand een idee?

[ Voor 28% gewijzigd door Hedva op 26-08-2016 02:46 . Reden: Ben verder gekomen haaaaaa ]

Alle reacties


Acties:
  • 0 Henk 'm!

  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Volgens mij moet je er eerst voor zorgen door bij de register_post_type() de volgende optie mee te geven 'hierarchical' => true. Hierdoor wordt je CPT wel van het type 'page' en niet meer 'post', wat bij grote hiërarchische structuren voor performance verlies zal leiden.

Let overigen wel op dat je bij de register_post_type() ook de page attributes moet zetten zoals in deze handleiding staat beschreven.

Verder vraag ik mij af of je niet de CPT's met elkaar moet verbinden middels een WordPress Taxonomy

Acties:
  • 0 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 08-09 14:12
LearnPress ken ik niet, maar ik gebruik zelf hiervoor de plugin Posts 2 Posts met de volgende code om twee CPTs koppelbaar te maken:

PHP:
1
2
3
4
5
6
7
8
9
10
function bbl_post_links()
{
    // Link scenes to locations
    p2p_register_connection_type(array(
        'name' => 'locations_scenes',
        'from' => 'locations',
        'to' => 'scenes'
    ));
}
add_action ('p2p_init', 'bbl_post_links', 5);


Hiermee kan ik een CPT "scenes" koppelen aan 1 of meerdere "locations" en andersom.

Full-stack webdeveloper in Groningen


Acties:
  • 0 Henk 'm!

  • Hedva
  • Registratie: Augustus 2010
  • Laatst online: 15-09 14:16

Hedva

Blobfish

Topicstarter
Thanks voor de antwoorden!

Ik had vannacht "'post__not_in' => $exclude_book" weggehaald. En het lijkt nu te werken.
Kan dat verder kwaad? Dat ik het niet vervang met een ander? Want zo niet laat ik het lekker zoals het is :)

Acties:
  • 0 Henk 'm!

  • Hmail
  • Registratie: April 2003
  • Laatst online: 15-09 10:50

Hmail

Doet ook maar wat.

De query die je toont lijkt een serie boeken op te halen van een auteur. Ik ken Learnpress niet, maar het is gebruikelijk om id's op te slaan. Als een opdracht meerdere boeken kan hebben is dat een array met post_id's. Dat is de manier waarop het normaliter gekoppeld wordt.

Als ik de code zo even bekijk lijkt $exclude_book een lijst boeken te zijn die al gekoppeld zijn aan andere lessons. Dus ik weet niet of het 'kwaad' kan, de server zal niet automatisch geformatteerd worden, maar of het het resultaat oplevert wat je verwacht kan ik niet inschatten ;)

It might sound as if I have no clue what I'm doing, but I actually have a vague idea.