Viewing 15 replies - 1 through 15 (of 19 total)
  • Plugin Author David Lingren

    (@dglingren)

    Thanks for the good words and for your question. Thanks as well for searching back through the archives to find and try the earlier Support Topic you referenced.

    It would be very helpful if you could post the “Item” markup from your custom template, as well as a sample of the HTML for one of your [mla_gallery] outputs (use View Source in your browser and cut/paste the relevant portion).

    When you write “doesn’t work at all“, does that mean that the terms do not show up at all, or that they are not properly formatted, or something else?

    You can verify that your custom taxonomies are working with MLA by first going to the Settings/Media Library Assistant General tab and scrolling down to the “Taxonomy Support” section. Make sure the “Support” box is checked for the custom taxonomy you are using. Then go to the Media/Assistant submenu, pull down the Screen Options in the upper right corner and check the box next to your taxonomy. It should display as a column in the submenu table. Are the values present and reasonable?

    Thanks in advance for any additional information you can supply; it will let me be more specifically helpful. I am confident this can be made to work in your application.

    Thread Starter CHQue

    (@chque)

    Hi David and thanks for your support.

    I’ve checked the “Support” section and the “Media / Assistant” tab and everything is fine.
    In fact, when I said “doesn’t work at all”, I actually meant that either my “class” is empty in my HTML code or I’ve got a “class=’la taxonomie n’est pas valide'” (unvalid taxonomy in english) mainly because I don’t know what shortcode to use in my [mla_gallery] bracket.

    My last attempt was [mla_gallery post_mime_type=all post_parent=all link=file columns=1 orderby=title mla_link_class="{+terms:category+}"] but with this shortcode my class is empty ?? I guess it’s because I’m not using att_categories but custom ones built in my children theme’s functions.php

    I’m currently migrating my demo and it will be online tomorrow. I hope these few lines can already give you a clue but if not, I’ll send you more details when my demo is online ??

    Thanks again
    Quentin

    Plugin Author David Lingren

    (@dglingren)

    Thank you for your update and for including the source text of your [mla_gallery] shortcode; You are close to a solution.

    First, the shortcode example you gave will extract terms from the WordPress “Categories” taxonomy. To get terms from your own custom taxonomy you need to replace terms:category with the slug of your custom taxonomy. For example, to use the “Att. Categories” taxonomy it would be terms:attachment_category. For the WordPress “Tags” taxonomy it would be terms:post_tag and so forth. If you supply the corrent taxonomy slug you should see the terms in the link’s class attribute.

    However, if you have multiple terms assigned to an item you will see a comma-separated list in the class attribute. What you need is a space-separated list, and there’s no provision for that in the mla_link_class processing (because I didn’t think of it). You have two options:

    1. Wait for me to investigate adding this capability to the next MLA version. I can give you a Development Version to test with if that works for you.
    2. Add a bit of PHP code to hook one of the [mla_gallery] filters and clean the list up there. I can give you the PHP source code for that, and you can add the code to your functions.php file or in a small custom plugin.

    Let me know if substituting the right slug gives you the terms you need, and how you would like to fix the comma-/space-delimited issue. Thanks for your understanding and your patience.

    Thread Starter CHQue

    (@chque)

    Hi David and thanks for your answer,

    Here’s my current mla_gallery shortcode : [mla_gallery post_mime_type=all post_parent=all link=file columns=1 orderby=title mla_link_class="{+terms:alea+}{+terms:thematique+}{+terms:type_doc+}{+terms:pays+}"]

    You’re right, I’ve got multiple terms and they are comma-separated but it also display their name rather than their slug (for example : class=”alerte précoce” rather than “class=”alerte-precoce”).

    Can you help me on both point ? I’d be glad to test your next version but I have to show the demo tomorrow so can you send me the php code I have to add to my functions.php.

    Thanks a lot again
    Cheers from Switzerland ??

    Plugin Author David Lingren

    (@dglingren)

    Thanks for your update with the [mla_gallery] source text. Here is some code you can adapt and add to your functions.php file:

    function mla_hooks_initialize() {
        /*
         * The filters are only useful for front-end posts/pages; exit if in the admin section
         */
        if ( is_admin() )
            return;
    
        add_filter( 'mla_gallery_item_values', 'MLAGalleryHooksExample::mla_gallery_item_values_filter', 10, 1 );
    }
    add_action('init', 'mla_hooks_initialize');
    
    /**
     * MLA Gallery Item Values
     *
     * @param    array    parameter_name => parameter_value pairs
     *
     * @return    array    updated substitution parameter name => value pairs
     */
    function mla_gallery_item_values_filter( $item_values ) {
        if ( isset( $item_values['terms:alea'] ) ) {
            $terms = wp_get_object_terms( $item_values['attachment_ID'], 'alea', array( 'fields' => 'slugs' ) );
            $item_values['terms:alea'] = implode( ' ', $terms );
        }
    
        if ( isset( $item_values['terms:thematique'] ) ) {
            $terms = wp_get_object_terms( $item_values['attachment_ID'], 'thematique', array( 'fields' => 'slugs' ) );
            $item_values['terms:thematique'] = implode( ' ', $terms );
        }
    
        if ( isset( $item_values['terms:type_doc'] ) ) {
            $terms = wp_get_object_terms( $item_values['attachment_ID'], 'type_doc', array( 'fields' => 'slugs' ) );
            $item_values['terms:type_doc'] = implode( ' ', $terms );
        }
    
        if ( isset( $item_values['terms:pays'] ) ) {
            $terms = wp_get_object_terms( $item_values['attachment_ID'], 'pays', array( 'fields' => 'slugs' ) );
            $item_values['terms:pays'] = implode( ' ', $terms );
        }
    
        return $item_values;
    } // mla_gallery_item_values_filter

    The logic is straightforward. You could make improvements, but this code should work in your application. For example, you may already have a good place to put the add_filter() function call.

    You should also put a space between each of the substitution parameters in your shortcode, i.e.:

    mla_link_class="{+terms:alea+} {+terms:thematique+} {+terms:type_doc+} {+terms:pays+}"

    Give this a try and let me know how it works in your application. I will leave this topic unresolved until I hear back form you.

    Thread Starter CHQue

    (@chque)

    Hi David and happy new year ??

    I add your code into my functions.php and had the following errors:

    Warning: call_user_func_array() expects parameter 1 to be a valid callback, class 'MLAGalleryHooksExample' not found in /home/httpd/vhosts/unicef.upwelling.net/undp.upwelling.net/demo/wp-includes/plugin.php on line 213

    Warning: Invalid argument supplied for foreach() in /home/httpd/vhosts/unicef.upwelling.net/undp.upwelling.net/demo/wp-content/plugins/media-library-assistant/includes/class-mla-data.php on line 362

    I’m not a php expert but to solve it I replaced
    add_filter( 'mla_gallery_item_values', 'MLAGalleryHooksExample::mla_gallery_item_values_filter', 10, 1 ); by add_filter( 'mla_gallery_item_values', 'mla_gallery_item_values_filter', 10, 1 ); but the code is still not working because it still display the taxonomy terms rather than the taxonomy slugs

    Can you help me one more time please and BTW you can now check it on https://undp.upwelling.net/demo/

    Thanks!

    Thread Starter CHQue

    (@chque)

    Hi again David.

    Quick question, is there a way to easily add the class generated by the mla_link_class shortcode to the <figure> markup rather than the link ?

    Thanks for your feedback
    Quentin

    Plugin Author David Lingren

    (@dglingren)

    Quentin,

    Thanks for your update. You have found (and fixed) the ‘MLAGalleryHooksExample’ reference I left in the code I copied from my test system and pasted into the post; I regret my error.

    Thank you as well for posting the link to your demo site. Looking through the HTML source code for that page I can see two [mla_gallery] displays, but I do not see the class attributes or the <figure> tags. It looks like all three of the itemtag, icontag and captiontag values are div. Are you using a custom markup template or changing these parameters? Can you tell me where to find the term names on this page?

    The mla_link_class parameter in your shortcode will add class arrtibutes to the <a> tag in each gallery item. If you want to add class attributes to other tags in the gallery item you can use a custom markup template. The earlier Support Topic you found and referenced in your first post does this.

    If you theme supports HTML5, the figure tag will be the [+itemtag+] value, used in the “Item” part of the markup template. The default “Item” markup is:

    <[+itemtag+] class='gallery-item [+last_in_row+]'>
    	<[+icontag+] class='gallery-icon [+orientation+]'>
    		[+link+]
    	</[+icontag+]>
    	<[+captiontag+] class='wp-caption-text gallery-caption'>
    		[+caption+]
    	</[+captiontag+]>
    </[+itemtag+]>

    You can add your terms to the figure tag like this:

    <[+itemtag+] class='gallery-item [+last_in_row+] [+terms:alea+] [+terms:thematique+] [+terms:type_doc+] [+terms:pays+]'>
    	<[+icontag+] class='gallery-icon [+orientation+]'>
    		[+link+]
    	</[+icontag+]>
    	<[+captiontag+] class='wp-caption-text gallery-caption'>
    		[+caption+]
    	</[+captiontag+]>
    </[+itemtag+]>

    In your [mla_gallery] shortcode you would replace the mla_link_tag parameter with a parameter to use your custom markup template, e.g., :

    [mla_gallery post_mime_type=all post_parent=all link=file columns=1 orderby=title mla_markup="my-custom-template"]

    Where my-custom-template is the name you gave to your markup template. To create a custom template:

    1. Navigate to the Settings/Media Library Assistant MLA Gallery tab.
    2. Scroll to the bottom of the screen to add a new template.
    3. Give it a name such as “my-custom-template”.
    4. Copy the five sections from the default markup template to the corresponding section of your new template.
    5. In the “Item:” section, modify the class attribute of the [+itemtag+] tag as shown above.
    6. Scroll to the bottom and click “Save Changes” to save your work.

    Without going through your functions.php source code, I do not know why the term slugs do not appear. You can try adding some debug messages to the code to see more of what is happening. Try something like this:

    function mla_gallery_item_values_filter( $item_values ) {
        if ( isset( $item_values['terms:alea'] ) ) {
    trigger_error( sprintf( 'terms:alea = "%1$s".', var_export( $item_values['terms:alea'], true ) ), E_USER_WARNING );
    
            $terms = wp_get_object_terms( $item_values['attachment_ID'], 'alea', array( 'fields' => 'slugs' ) );
            $item_values['terms:alea'] = implode( ' ', $terms );
    
    trigger_error( sprintf( 'replaced terms:alea = "%1$s".', var_export( $item_values['terms:alea'], true ) ), E_USER_WARNING );
        }
    
        if ( isset( $item_values['terms:thematique'] ) ) {
            $terms = wp_get_object_terms( $item_values['attachment_ID'], 'thematique', array( 'fields' => 'slugs' ) );
            $item_values['terms:thematique'] = implode( ' ', $terms );
        }
    
        if ( isset( $item_values['terms:type_doc'] ) ) {
            $terms = wp_get_object_terms( $item_values['attachment_ID'], 'type_doc', array( 'fields' => 'slugs' ) );
            $item_values['terms:type_doc'] = implode( ' ', $terms );
        }
    
        if ( isset( $item_values['terms:pays'] ) ) {
            $terms = wp_get_object_terms( $item_values['attachment_ID'], 'pays', array( 'fields' => 'slugs' ) );
            $item_values['terms:pays'] = implode( ' ', $terms );
        }
    
        return $item_values;
    } // mla_gallery_item_values_filter

    The two warning messages will tell you if the terms:alea parameter is present and if the substitution is working.

    Give the above suggestions a try and let me know what you find. Thanks for your patience in working on this issue.

    Thread Starter CHQue

    (@chque)

    Hi David and thanks for your answer.

    You’re right, I’ve got now 2 mla_gallery on my home page and I used your custom markup between my previous post and your answer to turn the itemtag and icontag into <div> and the captiontag into a <p>.

    If you’re looking closer at the two mla_gallery, the first one is generated with my custom taxonomy (alea, thematique, etc…) as class and the second one is generated with tags attached to the media as an id (I’ve created my tags based on my custom taxonomy slugs).

    The idea behind this two galleries (and to use the same taxonomy slugs for categories and tags) is to provide to the filters on the left results in 2 levels : the media matching the filter with their class are strongly relevant and the media matching the filter with their id are less relevant but still interesting for the user. I don’t know if this explanation is clear but I hope it helps you to understand a little bit more this project.

    Anyway, the custom markup are working well. I’ve created one to generate mla_gallery with class and another one with id. Please find below my current shortcodes for the home page

    [mla_gallery itemtag="div" captiontag="p" post_mime_type=all post_parent=all link=file columns=1 orderby=title mla_markup="class-custom-template"]
    [mla_gallery itemtag="div" captiontag="p" post_mime_type=all post_parent=all link=file columns=1 orderby=title mla_markup="id-custom-template"]

    I also changed my functions.php with your code but it still doesn’t work and I don’t have any error message ?? What other material can I share with you to help you to find a solution ?

    Thanks again for your help and your time, it’s always a pleasure to share with you.
    Cheers

    Plugin Author David Lingren

    (@dglingren)

    Thanks for your update and for the kind words; it’s my pleasure to help, and your progress is encouraging.

    I am happy to hear the custom templates are working for you. You may have realized that once you are using a custom template you can hard-code the itemtag="div" and similar changes into the template, removing the parameters from your [mla_gallery] shortcode. For example:

    <[+itemtag+] class= ...
    ...
    </[+itemtag+]>

    can become:

    <div class= ...
    ...
    </div>

    It will work either way, of course.

    If you added the trigger_error calls to your code and don’t see any warning messages it means that the terms:alea substitution parameter is not being found, or the filter is not being called at all. You can try adding another message to the start of the filter:

    function mla_gallery_item_values_filter( $item_values ) {
        trigger_error( sprintf( 'item_values = "%1$s".', var_export( $item_values, true ) ), E_USER_WARNING );
    
        if ( isset( $item_values['terms:alea'] ) ) {
    trigger_error( sprintf( 'terms:alea = "%1$s".', var_export( $item_values['terms:alea'], true ) ), E_USER_WARNING );
    
            $terms = wp_get_object_terms( $item_values['attachment_ID'], 'alea', array( 'fields' => 'slugs' ) );
            $item_values['terms:alea'] = implode( ' ', $terms );
    
    trigger_error( sprintf( 'replaced terms:alea = "%1$s".', var_export( $item_values['terms:alea'], true ) ), E_USER_WARNING );
        }

    If the new error message appears it will contain all of the substitution parameters being passed to the filter. If you don’t see terms:alea and the other taxonomy parameters in the list, check your template. It looks like the term names are present in the class attribute, so it is most likely that the filter is not being called at all.

    If the new message does not display at all, it means your filter is not being called. You can place another trigger_error call near the add_filter call to see if it is being executed.

    If all else fails, send me your contact information and I will give you an e-mail address where you can send the entire functions.php file for my review. You can use the Contact Us page at our web site:

    Fair Trade Judaica/Contact Us

    Give the additional messages a try and let me know what happens.

    Thread Starter CHQue

    (@chque)

    Hi David,

    Unfortunately I’ve got no message so I guess something is wrong.
    I’ll send you my functions.php by email in few minutes.

    Thanks

    Thread Starter CHQue

    (@chque)

    Hi David,

    Great news, I’ve tried to add your code to the mla-hooks-example.php file rather than in my functions.php file and guess what… it works perfectly ??

    Thanks again for your help
    Quentin

    Plugin Author David Lingren

    (@dglingren)

    Quentin,

    Thanks for your update with the good news. The example plugin solution is a fine alternative; that’s where I developed the code in the first place. Adding the code to functions.php simply avoids the need to manage the additional file/plugin.

    I hope you got my e-mail response to your message. I’d still be interested in seeing your functions.php file just to determine why that alternative didn’t work for you.

    Thanks for your ongoing help and patience with this issue. I am marking it resolved, but please update it if you have any more trouble or questions regarding the topic.

    Thread Starter CHQue

    (@chque)

    Hi David!

    No I didn’t got your email but unfortunately I deleted the code from my functions.php file and I don’t think I’ll be able to retrieve it… ??

    Anyway, I want to thank you again for your help and your patience resolving my issues ??

    Cheers,
    Quentin

    Thread Starter CHQue

    (@chque)

    Hi David,

    I shouldn’t open a new topic on this page but I don’t know how to filter the mla_gallery with specific term of my custom taxonomy… I tried tax_queries and other solution but it doesn’t work (either 0 or all documents are displayed).

    Can you help me to update my shortcode above (in previous post) but showing only documents based on my custom taxonomy = pays and term = regional-aoc

    Thanks a lot and have a good day!

Viewing 15 replies - 1 through 15 (of 19 total)
  • The topic ‘Add custom taxonomy terms as class’ is closed to new replies.