Add utility function to get support links
This commit is contained in:
parent
78401fcce5
commit
be8fa221f1
@ -1416,4 +1416,82 @@ if ( ! function_exists( 'fictioneer_bbcodes' ) ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// =============================================================================
|
||||||
|
// GET SUPPORT LINKS
|
||||||
|
// =============================================================================
|
||||||
|
|
||||||
|
if ( ! function_exists( 'fictioneer_get_support_links' ) ) {
|
||||||
|
/**
|
||||||
|
* Returns support links for the post or author
|
||||||
|
*
|
||||||
|
* @since 5.0.19
|
||||||
|
*
|
||||||
|
* @param int|null $post_id The post ID. Defaults to global post.
|
||||||
|
* @param int|null $parent_id The parent ID. Default null.
|
||||||
|
* @param int|null $author_id The post ID. Defaults to post author ID.
|
||||||
|
*
|
||||||
|
* @return array Array of support links.
|
||||||
|
*/
|
||||||
|
|
||||||
|
function fictioneer_get_support_links( $post_id = null, $parent_id = null, $author_id = null ) {
|
||||||
|
global $post;
|
||||||
|
|
||||||
|
// Setup
|
||||||
|
$post_id = $post_id ?? $post->ID;
|
||||||
|
$author_id = $author_id ?? get_post_field( 'post_author', $post_id );
|
||||||
|
$post_type = get_post_type( $post_id );
|
||||||
|
$links = array(
|
||||||
|
'topwebfiction' => null,
|
||||||
|
'patreon' => null,
|
||||||
|
'kofi' => null,
|
||||||
|
'subscribestar' => null,
|
||||||
|
'paypal' => null,
|
||||||
|
'donation' => null
|
||||||
|
);
|
||||||
|
|
||||||
|
// Get story ID if chapter and parent ID not given
|
||||||
|
if ( empty( $parent_id ) && $post_type == 'fcn_chapter' ) {
|
||||||
|
$parent_id = fictioneer_get_field( 'fictioneer_chapter_story', $post_id );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Post level (e.g. chapter)
|
||||||
|
$topwebfiction_link = fictioneer_get_field( 'fictioneer_story_topwebfiction_link', $post_id );
|
||||||
|
$patreon_link = fictioneer_get_field( 'fictioneer_patreon_link', $post_id );
|
||||||
|
$kofi_link = fictioneer_get_field( 'fictioneer_kofi_link', $post_id );
|
||||||
|
$subscribestar_link = fictioneer_get_field( 'fictioneer_subscribestar_link', $post_id );
|
||||||
|
$paypal_link = fictioneer_get_field( 'fictioneer_paypal_link', $post_id );
|
||||||
|
$donation_link = fictioneer_get_field( 'fictioneer_donation_link', $post_id );
|
||||||
|
|
||||||
|
// Parent level (e.g. story)
|
||||||
|
if ( ! empty( $parent_id ) ) {
|
||||||
|
if ( empty( $topwebfiction_link ) ) $topwebfiction_link = fictioneer_get_field( 'fictioneer_story_topwebfiction_link', $parent_id );
|
||||||
|
if ( empty( $patreon_link ) ) $patreon_link = fictioneer_get_field( 'fictioneer_patreon_link', $parent_id );
|
||||||
|
if ( empty( $kofi_link ) ) $kofi_link = fictioneer_get_field( 'fictioneer_kofi_link', $parent_id );
|
||||||
|
if ( empty( $subscribestar_link ) ) $subscribestar_link = fictioneer_get_field( 'fictioneer_subscribestar_link', $parent_id );
|
||||||
|
if ( empty( $paypal_link ) ) $paypal_link = fictioneer_get_field( 'fictioneer_paypal_link', $parent_id );
|
||||||
|
if ( empty( $donation_link ) ) $donation_link = fictioneer_get_field( 'fictioneer_donation_link', $parent_id );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Author level
|
||||||
|
if ( $author_id ) {
|
||||||
|
if ( empty( $patreon_link ) ) $patreon_link = get_the_author_meta( 'fictioneer_user_patreon_link', $author_id );
|
||||||
|
if ( empty( $kofi_link ) ) $kofi_link = get_the_author_meta( 'fictioneer_user_kofi_link', $author_id );
|
||||||
|
if ( empty( $subscribestar_link ) ) $subscribestar_link = get_the_author_meta( 'fictioneer_user_subscribestar_link', $author_id );
|
||||||
|
if ( empty( $paypal_link ) ) $paypal_link = get_the_author_meta( 'fictioneer_user_paypal_link', $author_id );
|
||||||
|
if ( empty( $donation_link ) ) $donation_link = get_the_author_meta( 'fictioneer_user_donation_link', $author_id );
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add links if found
|
||||||
|
if ( ! empty( $topwebfiction_link ) ) $links['topwebfiction'] = $topwebfiction_link;
|
||||||
|
if ( ! empty( $patreon_link ) ) $links['patreon'] = $patreon_link;
|
||||||
|
if ( ! empty( $kofi_link ) ) $links['kofi'] = $kofi_link;
|
||||||
|
if ( ! empty( $subscribestar_link ) ) $links['subscribestar'] = $subscribestar_link;
|
||||||
|
if ( ! empty( $paypal_link ) ) $links['paypal'] = $paypal_link;
|
||||||
|
if ( ! empty( $donation_link ) ) $links['donation'] = $donation_link;
|
||||||
|
|
||||||
|
// Return
|
||||||
|
return $links;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
@ -398,9 +398,9 @@ if ( ! function_exists( 'fictioneer_chapter_support_links' ) ) {
|
|||||||
*
|
*
|
||||||
* @since Fictioneer 5.0
|
* @since Fictioneer 5.0
|
||||||
*
|
*
|
||||||
* @param WP_User $args['author'] Author of the post.
|
* @param WP_User $args['author'] Author of the post.
|
||||||
* @param WP_Post|null $args['story_post'] Optional. Post object of the story.
|
* @param WP_Post|null $args['story_post'] Optional. Post object of the story.
|
||||||
* @param int $args['chapter_id'] The chapter ID.
|
* @param int $args['chapter_id'] The chapter ID.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function fictioneer_chapter_support_links( $args ) {
|
function fictioneer_chapter_support_links( $args ) {
|
||||||
@ -409,84 +409,60 @@ if ( ! function_exists( 'fictioneer_chapter_support_links' ) ) {
|
|||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
$author_id = $args['author']->ID;
|
$author_id = $args['author']->ID;
|
||||||
$patreon_link = fictioneer_get_field( 'fictioneer_patreon_link', $args['chapter_id'] );
|
$links = fictioneer_get_support_links( $args['chapter_id'], $args['story_post']->ID, $author_id );
|
||||||
$kofi_link = fictioneer_get_field( 'fictioneer_kofi_link', $args['chapter_id'] );
|
|
||||||
$subscribestar_link = fictioneer_get_field( 'fictioneer_subscribestar_link', $args['chapter_id'] );
|
|
||||||
$paypal_link = fictioneer_get_field( 'fictioneer_paypal_link', $args['chapter_id'] );
|
|
||||||
$donation_link = fictioneer_get_field( 'fictioneer_donation_link', $args['chapter_id'] );
|
|
||||||
$topwebfiction_link = null;
|
|
||||||
$support_links = [];
|
$support_links = [];
|
||||||
|
|
||||||
// Story level support links
|
|
||||||
if ( ! empty( $args['story_post'] ) ) {
|
|
||||||
$story_id = $args['story_post']->ID;
|
|
||||||
$topwebfiction_link = fictioneer_get_field( 'fictioneer_story_topwebfiction_link', $story_id );
|
|
||||||
|
|
||||||
if ( ! $patreon_link ) $patreon_link = fictioneer_get_field( 'fictioneer_patreon_link', $story_id );
|
|
||||||
if ( ! $kofi_link ) $kofi_link = fictioneer_get_field( 'fictioneer_kofi_link', $story_id );
|
|
||||||
if ( ! $subscribestar_link ) $subscribestar_link = fictioneer_get_field( 'fictioneer_subscribestar_link', $story_id );
|
|
||||||
if ( ! $paypal_link ) $paypal_link = fictioneer_get_field( 'fictioneer_paypal_link', $story_id );
|
|
||||||
if ( ! $donation_link ) $donation_link = fictioneer_get_field( 'fictioneer_donation_link', $story_id );
|
|
||||||
}
|
|
||||||
|
|
||||||
// Author level support links
|
|
||||||
if ( ! $patreon_link ) $patreon_link = get_the_author_meta( 'fictioneer_user_patreon_link', $author_id );
|
|
||||||
if ( ! $kofi_link ) $kofi_link = get_the_author_meta( 'fictioneer_user_kofi_link', $author_id );
|
|
||||||
if ( ! $subscribestar_link ) $subscribestar_link = get_the_author_meta( 'fictioneer_user_subscribestar_link', $author_id );
|
|
||||||
if ( ! $paypal_link ) $paypal_link = get_the_author_meta( 'fictioneer_user_paypal_link', $author_id );
|
|
||||||
if ( ! $donation_link ) $donation_link = get_the_author_meta( 'fictioneer_user_donation_link', $author_id );
|
|
||||||
|
|
||||||
// Topwebfiction?
|
// Topwebfiction?
|
||||||
if ( $topwebfiction_link ) {
|
if ( $links['topwebfiction'] ) {
|
||||||
$support_links['topwebfiction'] = array(
|
$support_links['topwebfiction'] = array(
|
||||||
'label' => __( 'Top Web Fiction', 'fictioneer' ),
|
'label' => __( 'Top Web Fiction', 'fictioneer' ),
|
||||||
'icon' => '<i class="fa-solid fa-circle-up"></i>',
|
'icon' => '<i class="fa-solid fa-circle-up"></i>',
|
||||||
'link' => $topwebfiction_link
|
'link' => $links['topwebfiction']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Patreon?
|
// Patreon?
|
||||||
if ( $patreon_link ) {
|
if ( $links['patreon'] ) {
|
||||||
$support_links['patreon'] = array(
|
$support_links['patreon'] = array(
|
||||||
'label' => __( 'Patreon', 'fictioneer' ),
|
'label' => __( 'Patreon', 'fictioneer' ),
|
||||||
'icon' => '<i class="fa-brands fa-patreon"></i>',
|
'icon' => '<i class="fa-brands fa-patreon"></i>',
|
||||||
'link' => $patreon_link
|
'link' => $links['patreon']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Ko-Fi?
|
// Ko-Fi?
|
||||||
if ( $kofi_link ) {
|
if ( $links['kofi'] ) {
|
||||||
$support_links['kofi'] = array(
|
$support_links['kofi'] = array(
|
||||||
'label' => __( 'Ko-Fi', 'fictioneer' ),
|
'label' => __( 'Ko-Fi', 'fictioneer' ),
|
||||||
'icon' => fictioneer_get_icon( 'kofi' ),
|
'icon' => fictioneer_get_icon( 'kofi' ),
|
||||||
'link' => $kofi_link
|
'link' => $links['kofi']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SubscribeStar?
|
// SubscribeStar?
|
||||||
if ( $subscribestar_link ) {
|
if ( $links['subscribestar'] ) {
|
||||||
$support_links['subscribestar'] = array(
|
$support_links['subscribestar'] = array(
|
||||||
'label' => __( 'SubscribeStar', 'fictioneer' ),
|
'label' => __( 'SubscribeStar', 'fictioneer' ),
|
||||||
'icon' => '<i class="fa-solid fa-s"></i>',
|
'icon' => '<i class="fa-solid fa-s"></i>',
|
||||||
'link' => $subscribestar_link
|
'link' => $links['subscribestar']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// PayPal?
|
// PayPal?
|
||||||
if ( $paypal_link ) {
|
if ( $links['paypal'] ) {
|
||||||
$support_links['paypal'] = array(
|
$support_links['paypal'] = array(
|
||||||
'label' => __( 'PayPal', 'fictioneer' ),
|
'label' => __( 'PayPal', 'fictioneer' ),
|
||||||
'icon' => '<i class="fa-brands fa-paypal"></i>',
|
'icon' => '<i class="fa-brands fa-paypal"></i>',
|
||||||
'link' => $paypal_link
|
'link' => $links['paypal']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Donation?
|
// Donation?
|
||||||
if ( $paypal_link ) {
|
if ( $links['donation'] ) {
|
||||||
$support_links['donation'] = array(
|
$support_links['donation'] = array(
|
||||||
'label' => __( 'Donation', 'fictioneer' ),
|
'label' => __( 'Donation', 'fictioneer' ),
|
||||||
'icon' => '<i class="fa-solid fa-hand-holding-heart"></i>',
|
'icon' => '<i class="fa-solid fa-hand-holding-heart"></i>',
|
||||||
'link' => $donation_link
|
'link' => $links['donation']
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user