Skip to content

Instantly share code, notes, and snippets.

@troutcolor
Created May 6, 2026 18:53
Show Gist options
  • Select an option

  • Save troutcolor/fbde5015e2b3ebc3e08316c12fa52760 to your computer and use it in GitHub Desktop.

Select an option

Save troutcolor/fbde5015e2b3ebc3e08316c12fa52760 to your computer and use it in GitHub Desktop.
‘urlfeedlandserver’ defaults to ‘https://feedland.com/’, ‘screenname’ defaults to => ‘davewiner’, ‘catname’ defaults to => ‘All’ Example: Example shortcode: [feedlandriverinclude screenname="johnjohnston" cat="blogroll"]
<?php
/**
* Plugin Name: FeedLand River Include
* Description: Embeds a FeedLand river viewer via shortcode [feedlandriverinclude].
* Version: 1.0.0
* License: GPLv2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
$feedlandriverinclude_assets_loaded = false;
add_shortcode( 'feedlandriverinclude', 'feedlandriverinclude_shortcode' );
function feedlandriverinclude_shortcode( $atts ) {
global $feedlandriverinclude_assets_loaded;
if ( ! $feedlandriverinclude_assets_loaded ) {
feedlandriverinclude_enqueue_assets();
$feedlandriverinclude_assets_loaded = true;
}
extract( shortcode_atts( array(
'urlfeedlandserver' => 'https://feedland.com/',
'screenname' => 'davewiner',
'catname' => 'All',
), $atts ) );
$inline_js = "
const appConsts = {
urlFeedlandServer: " . json_encode( $urlfeedlandserver ) . "
};
const riverSpec = {
screenname: " . json_encode( $screenname ) . ",
catname: " . json_encode( $catname ) . "
};
function startup() {
console.log('startup');
\$('#idServerUrl').text('Server URL: ' + appConsts.urlFeedlandServer);
\$('#idRiverSpec').text('River spec: ' + jsonStringify(riverSpec));
displayTraditionalRiver(riverSpec, \$('.divRiverContainer'));
}
jQuery(document).ready(function() {
startup();
});
";
wp_add_inline_script( 'flri-riverviewer', $inline_js, 'after' );
$return = "<div class='divRiverContainer'></div>";
return $return;
}
function feedlandriverinclude_enqueue_assets() {
$styles = [
'flri-misc' => '//s3.amazonaws.com/scripting.com/code/feedland/home/misc.css',
'flri-oldschool' => '//s3.amazonaws.com/scripting.com/code/feedland/home/oldschoolrender.css',
'flri-riverviewer' => '//s3.amazonaws.com/scripting.com/code/feedland/home/riverviewer.css',
'flri-basic' => '//s3.amazonaws.com/scripting.com/code/includes/basic/styles.css',
'flri-bootstrap' => '//s3.amazonaws.com/scripting.com/code/includes/bootstrap.css',
'flri-fontawesome' => '//s3.amazonaws.com/scripting.com/code/fontawesome/css/all.css',
];
foreach ( $styles as $handle => $url ) {
wp_enqueue_style( $handle, $url, [], null );
}
// jQuery first, then dependencies, then app scripts
$scripts = [
'flri-jquery' => [ 'url' => '//s3.amazonaws.com/scripting.com/code/includes/jquery-1.9.1.min.js', 'deps' => [] ],
'flri-bootstrap' => [ 'url' => '//s3.amazonaws.com/scripting.com/code/includes/bootstrap.min.js', 'deps' => ['flri-jquery'] ],
'flri-markdown' => [ 'url' => '//s3.amazonaws.com/fargo.io/code/markdownConverter.js', 'deps' => ['flri-jquery'] ],
'flri-basic' => [ 'url' => '//s3.amazonaws.com/scripting.com/code/includes/basic/code.js', 'deps' => ['flri-jquery'] ],
'flri-misc' => [ 'url' => '//s3.amazonaws.com/scripting.com/code/feedland/home/misc.js', 'deps' => ['flri-jquery'] ],
'flri-api' => [ 'url' => '//s3.amazonaws.com/scripting.com/code/feedland/home/api.js', 'deps' => ['flri-jquery'] ],
'flri-getfeedinfo' => [ 'url' => '//s3.amazonaws.com/scripting.com/code/feedland/home/getfeedinfo.js', 'deps' => ['flri-api'] ],
'flri-oldschool' => [ 'url' => '//s3.amazonaws.com/scripting.com/code/feedland/home/oldschoolrender.js', 'deps' => ['flri-misc'] ],
'flri-riverviewer' => [ 'url' => '//s3.amazonaws.com/scripting.com/code/feedland/home/riverviewer.js', 'deps' => ['flri-api', 'flri-misc', 'flri-oldschool'] ],
];
foreach ( $scripts as $handle => $script ) {
wp_enqueue_script( $handle, $script['url'], $script['deps'], null, true );
}
}
@scotthansonde
Copy link
Copy Markdown

scotthansonde commented May 7, 2026

This is great! I spent a little bit of time with Codex trying to get the fonts and styles consistent. We first added the ubuntu font to the styles array.

$styles = [
        'flri-ubuntu'      => 'https://fonts.googleapis.com/css2?family=Ubuntu:wght@300;400;500;700&display=swap',
        'flri-misc'        => '//s3.amazonaws.com/scripting.com/code/feedland/home/misc.css',
        'flri-oldschool'   => '//s3.amazonaws.com/scripting.com/code/feedland/home/oldschoolrender.css',
        'flri-riverviewer' => '//s3.amazonaws.com/scripting.com/code/feedland/home/riverviewer.css',
        'flri-basic'       => '//s3.amazonaws.com/scripting.com/code/includes/basic/styles.css',
        'flri-bootstrap'   => '//s3.amazonaws.com/scripting.com/code/includes/bootstrap.css',
        'flri-fontawesome' => '//s3.amazonaws.com/scripting.com/code/fontawesome/css/all.css',
    ];

Then we added some styles of our own to make things look consistent (right before setting the $scripts array).

wp_add_inline_style(
        'flri-riverviewer',
        '
        .divRiverDisplay,
        .divRiverDisplay .divRiverSection,
        .divRiverDisplay .divRiverSection *:not(i):not(.fa):not(.far):not(.fas):not(.fab) {
            font-family: "Ubuntu", sans-serif !important;
        }

        .divRiverDisplay .divRiverItem,
        .divRiverDisplay .divRiverItem .divSingularItem,
        .divRiverDisplay .divRiverItem .divTitledItem {
            font-size: 16px !important;
            font-weight: 400 !important;
            line-height: 1.5 !important;
        }

        .divRiverDisplay .divRiverItem .divTitledItemBody,
        .divRiverDisplay .divRiverItem .divTitledItemBody * {
            font-size: 16px !important;
            font-weight: 400 !important;
            line-height: 1.4 !important;
        }

        .divRiverDisplay .divRiverItem .divTitle,
        .divRiverDisplay .divRiverItem .divTitle * {
            font-size: 18px !important;
            font-weight: 700 !important;
            line-height: 1.25 !important;
        }

        .divRiverDisplay a {
            text-decoration: none !important;
        }

        .divRiverDisplay a:hover,
        .divRiverDisplay a:focus {
            text-decoration: underline !important;
        }

        .divRiverDisplay .spFeedTitle,
        .divRiverDisplay .spFeedPubDate {
            background: var(--wp--preset--color--base, #fff) !important;
        }
        '
    );

Next we'll have to figure out how to do this without making everything !important 😃

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment