• Resolved 2candela2

    (@2candela2)


    Hello and thanks for the plugin

    I have a pod with a related field. To find it I use:

    $related = $pod->field( 'field_name', array('output'=>'find');

    How can I get a pager for it?
    Is there a way that the pages load by ajax?

    Thanks a lot and have a good day ??

Viewing 1 replies (of 1 total)
  • Plugin Support Paul Clark

    (@pdclark)

    Below is an example wrapped in a shortcode.

    If already in a PHP context, the content of the function attached to the shortcode can be used on its own as long as $atts values are set.

    Example use would be:

    [paged_relationship relationship_field="paged_relationship" relationship_post_type="example_post_type" limit="1"]

    …where paged_relationship is the field name on the current object, example_post_type is the post type of the related content, and limit is the number of items to show for each page.

    /**
    * Plugin Name: Pods —?Paged Relationship Shortcode
    * Description: Output a paged template based on relationship field. Usage: <code>[paged_relationship relationship_field="paged_relationship" relationship_post_type="example_post_type" limit="1"]</code> where <code>paged_relationship</code> is the field name on the current object, <code>example_post_type</code> is the post type of the related content, and <code>limit</code> is the number of items to show for each page.
    * Version: 1
    * Plugin URI: https://www.ads-software.com/support/topic/create-pager-for-a-related-field/
    */

    // @see https://developer.www.ads-software.com/reference/functions/add_shortcode/
    add_shortcode(
    'paged_relationship',
    function( $atts, $content, $tag ) {
    // @see https://docs.pods.io/code/pods/find/
    $pod = pods(
    $atts['relationship_post_type'],
    [
    'limit' => $atts['limit'],
    // @see https://www.php.net/manual/en/function.sprintf.php
    'where' => sprintf(
    // @see https://www.w3schools.com/mysql/mysql_in.asp
    't.ID IN( %s )',
    // @see https://www.php.net/manual/en/function.implode.php
    implode(
    ', ',
    // @see https://www.php.net/manual/en/function.array-map
    array_map(
    'intval',
    (array) get_post_meta( get_the_ID(), $atts['relationship_field'], false )
    )
    )
    ),
    'pagination' => 'true',
    ]
    );

    // Shortcodes return output.
    // Output buffer, ob_* functions capture output for return.
    ob_start();

    echo '<ul>';

    // Output for each found item using Pods template syntax.
    // @see https://docs.pods.io/code/pods/template/
    echo $pod->template(
    null,
    '<li><a href="{@permalink}">{@post_title}</a></li>'
    );

    echo '</ul>';

    // Output pagination.
    // @see https://docs.pods.io/code/pods/pagination/
    echo $pod->pagination(
    [
    'type' => 'advanced',
    ]
    );

    return ob_get_clean();
    }
    );

    The script can be installed as a plugin in wp-content/plugins, or activated using a Code Snippets plugin.

    Please note the inline comments for additional options and documentation.

Viewing 1 replies (of 1 total)
  • You must be logged in to reply to this topic.