আমি কীভাবে আমার স্টাইলশীটে ওয়ার্ডপ্রেস ফাংশন ব্যবহার করতে পারি?


21

আমার style.phpফাইলটি এ জাতীয় দেখাচ্ছে।

<?php  header('Content-Type: text/css');?>
#div{
    background:<?php  echo get_option('bgcolor');?>;
}

এটি কাজ করে না, তবে আমি যখন এটি করি এটি কাজ করে।

<?php  header('Content-Type: text/css');?>
#div{
    background: <?php  echo 'blue';?>;
}

কী সমস্যা হবে?

এটি মেইনফিল.এফপি

 <?php 

    function test(){
    global get_option('bgcolor');?>

        <input type="text" id="bgcolor" name="post_popup_settings[bgcolor]" value="<?php echo get_option('bgcolor');?> " />
    <?php
}
    add_action('admin_head','test');

এটি আসলে অ্যাডমিন বিভাগে।


ওয়ার্ডপ্রেসকে কীভাবে স্টাইল.এফপি
ফুসিয়া

আমি wp_enqueue_scriptts () ব্যবহার করেছি;
রনি

wp_enqueue_style ('মাই_ স্টাইল', প্লাগইন_ডির_ুরল ( ফাইল ) .'সামগ্রী / স্টাইল
রনি

1
আমি নিশ্চিত যে আপনি এটি আপনার ব্যবহার করবেন না style.php। যদি স্টাইল ফাইলটি ওয়ার্ডপ্রেস দ্বারা না ডাকা হয় তবে কোনও ওয়ার্ডপ্রেস ফাংশন উপলব্ধ নেই।
ফুসিয়া

উত্তর:


26

ওয়ার্ডপ্রেস লোড করা থাকলেই ওয়ার্ডপ্রেস ফাংশনগুলি উপলব্ধ। আপনি যদি আপনার style.phpসরাসরি কল করেন তবে আপনি কোনও ওয়ার্ডপ্রেস ফাংশন ব্যবহার করতে পারবেন না।

আপনার পিএইচপি চালিত স্টাইলশিটের জন্য ওয়ার্ডপ্রেস লোড করার একটি সহজ উপায় হ'ল ওয়ার্ডপ্রেসের একটি শেষ পয়েন্ট যুক্ত করুন: একটি কাস্টম, সংরক্ষিত ইউআরএল যেখানে আপনি নিজের টেম্পলেট ফাইলটি লোড করেন।

সেখানে যাওয়ার জন্য আপনাকে এইগুলি করতে হবে:

  1. 'init'সাথে একটি শেষ পয়েন্ট নিবন্ধন করুন add_rewrite_endpoint()। এর নাম দিন 'phpstyle'

  2. Ook 'request'ুকুন এবং নিশ্চিত করুন 'phpstyle'যে এটি সেট করা থাকলে শেষ পয়েন্টটি ভেরিয়েবলটি খালি নয়। এখানে কী চলছে তা বোঝার জন্য ক্রিস্টোফার ডেভিসের দুর্দান্ত এ (বেশিরভাগ ক্ষেত্রে) ওয়ার্ডপ্রেস পুনর্লিখনের API এর সম্পূর্ণ গাইডটি পড়ুন

  3. 'template_redirect'ডিফল্ট টেম্পলেট ফাইলের পরিবর্তে আপনার ফাইলটি প্রবেশ করুন এবং বিতরণ করুন index.php

জিনিসগুলিকে সংক্ষিপ্ত রাখতে আমি নীচের ডেমো প্লাগইনটিতে একটি ফাংশনে তিনটি সাধারণ ধাপ একত্রিত করেছি ।

প্লাগইন পিএইচপি স্টাইল

<?php # -*- coding: utf-8 -*-
/*
 * Plugin Name: PHP Style
 * Description: Make your theme's 'style.php' available at '/phpstyle/'.
 */
add_action( 'init',              'wpse_54583_php_style' );
add_action( 'template_redirect', 'wpse_54583_php_style' );
add_filter( 'request',           'wpse_54583_php_style' );

function wpse_54583_php_style( $vars = '' )
{
    $hook = current_filter();

    // load 'style.php' from the current theme.
    'template_redirect' === $hook
        && get_query_var( 'phpstyle' )
        && locate_template( 'style.php', TRUE, TRUE )
        && exit;

    // Add a rewrite rule.
    'init' === $hook && add_rewrite_endpoint( 'phpstyle', EP_ROOT );

    // Make sure the variable is not empty.
    'request' === $hook
        && isset ( $vars['phpstyle'] )
        && empty ( $vars['phpstyle'] )
        && $vars['phpstyle'] = 'default';

    return $vars;
}

প্লাগইনটি ইনস্টল wp-admin/options-permalink.phpকরুন, পুনর্লিখনের নিয়মগুলি রিফ্রেশ করতে একবার যান এবং style.phpআপনার থিমটিতে একটি যুক্ত করুন ।

নমুনা style.php

<?php # -*- coding: utf-8 -*-
header('Content-Type: text/css;charset=utf-8');

print '/* WordPress ' . $GLOBALS['wp_version'] . " */\n\n";

print get_query_var( 'phpstyle' );

এখন দেখুন yourdomain/phpstyle/। আউটপুট:

/* WordPress 3.3.2 */

default

আপনি যদি yourdomain/phpstyle/blue/আউটপুট যান তবে:

/* WordPress 3.3.2 */

blue

সুতরাং আপনি মূল্যের উপর নির্ভর করে একটি ফাইলের সাথে বিভিন্ন স্টাইলশিট সরবরাহ করতে শেষ পয়েন্টটি ব্যবহার করতে পারেন get_query_var( 'phpstyle' )

বিচারকার্য স্থগিত রাখার আদেশ

এটি আপনার সাইটকে ধীর করবে। ওয়ার্ডপ্রেস প্রতিবারের জন্য দুবার লোড করতে হয়। আক্রমণাত্মক ক্যাচিং ছাড়া এটি করবেন না।


এটি WP- এ পোর্ট করার জন্য +1। সংক্ষিপ্ত ধারণা: get_query_var( 'phpstyle' ) AND ! defined( 'SHORTINIT' ) AND define( 'SHORTINIT', true )জিনিসগুলি গতি বাড়ানোর জন্য ... এবং তারপরে যদি সমস্ত প্রয়োজনীয় ফাংশন পাওয়া যায় ...
কায়সার

1

এর মাধ্যমে আউটপুট লোড করে আপনি এটি করতে পারতেন admin-ajax.phpতবে এর আরও ভাল উপায় হ'ল ওয়ার্ডপ্রেস SHORTINITধ্রুবকটি ব্যবহার করা যাতে আপনার প্রয়োজনীয় ফাংশনগুলি লোড করা যায় তবে এটি করার জন্য আপনাকে খুঁজে পেতে এবং লোড wp-load.phpকরতে হবে:

// send CSS Header
header("Content-type: text/css; charset: UTF-8");

// faster load by reducing memory with SHORTINIT
define('SHORTINIT', true);

// recursively find WordPress load
function find_require($file,$folder=null) {
    if ($folder === null) {$folder = dirname(__FILE__);}
    $path = $folder.DIRECTORY_SEPARATOR.$file;
    if (file_exists($path)) {require($path); return $folder;}
    else {
        $upfolder = find_require($file,dirname($folder));
        if ($upfolder != '') {return $upfolder;}
    }
}

// load WordPress core (minimal)
$wp_root_path = find_require('wp-load.php');
define('ABSPATH', $wp_root_path);
define('WPINC', 'wp-includes');

এই স্থানে আপনি হবে প্রয়োজন নিশ্চিত অন্তর্ভুক্ত যাই হোক না কেন অন্য হতে wp-includesযা আপনার কেমন সংরক্ষণ করা হয় এবং এইভাবে ঐ অ্যাক্সেস উপর নির্ভর করে পরিবর্তিত হবে - আপনি যে ফাইলগুলি আপনার থিম অপশন পেতে হবে। (আপনাকে সম্ভবত এই তালিকায় আরও যুক্ত করতে হবে যাতে আপনি মারাত্মক ত্রুটি না পান - তবে আপনি যাচ্ছেন, মারাত্মক ত্রুটিগুলি আপনাকে বলবে যে আপনাকে কোন ফাইলগুলি যুক্ত করতে হবে)) উদাহরণস্বরূপ।

include(ABSPATH.WPINC.DIRECTORY_SEPARATOR.'version.php');
include(ABSPATH.WPINC.DIRECTORY_SEPARATOR.'general-template.php');
include(ABSPATH.WPINC.DIRECTORY_SEPARATOR.'link-template.php');

তারপরে আপনার প্রয়োজনীয় সমস্ত ফাংশনগুলি একবার হয়ে গেলে আপনি সেই ফাংশনগুলি ব্যবহার করে সিএসএস আউটপুট করতে পারেন ... যেমন।

echo 'body {color:' . get_theme_mod('body_color') . ';}';
echo 'body {backgroundcolor:' . get_theme_mod('body_background_color') . ';}';
exit;

তারপরে আপনি ফাইলটিকে সাধারণ হিসাবে সজ্জিত করতে পারেন, উদাহরণস্বরূপ:

wp_enqueue_style('custom-css',trailingslashit(get_template_directory_uri()).'styles.php');

আমার ফাইলগুলিতে আপনার কোড যুক্ত করার সময়, এটি এখনও অপরিবর্তিত বলে। এটি আমার কোড: পেস্টবিন.com
জে ডো

আপনার যা দরকার তা না ../../উপর wp-load.phpপাথ, ফাংশন হিসাবে এটা আপনার জন্য পাবেন দেওয়া ... আমি বলতে চাই আপনি এটি প্রয়োজন নেই অন্তর্ভুক্ত যাই হোক না কেন ফাইল আপনি প্রয়োজন যে আছে ফাংশন আপনি ব্যবহার করছেন, যেমন। get_background_imageহয় theme.phpইত্যাদি ... হিসাবে আপনি সিএসএস আপনি আরো যাতে আপনি তাদের এই পদ্ধতি কার্যকরী ও নির্ভরযোগ্যভাবে ব্যবহার করতে এটি করা শিখতে হবে প্রয়োজন হতে পারে যোগ করুন।
মজিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.