문제

나를 추가하려고 어떤 기능을에서 플러그인을 만들었으로 워드프레스의 테마 하지만 나는 작은 기쁨입니다.설명서 없이 정말로 나에게 도움 문제를 해결 그래서 아마도 여기에 누군가가 도움이 될 수 있습니다.

나는 플러그인은 워드프레스에서는 활성화되고 작동합니다.클래스 이를 위해 플러그인 기능이라고 generateHtml 는 것처럼 액세스하에서는 워드 프레스 테마입니다.그러나 어떤 시도,나는 수가 없 액세스 플러그인의 코드입니다.

할 수 있게 무엇을 요약해야 할 주제를 액세스하는 코드에서는 플러그인 및/또는 지점이 밖에 나가 잘못된 것에 내 코드:

플러그인:

<?php
/** Usual comments here **/

if (!class_exists("ImageRotator")) {
  class ImageRotator {
    private $uploadPath = '';
    private $pluginPath = '';
    private $options;

    function __construct() {
      $this->uploadPath = dirname(__file__).'\\uploads\\';
      // add_shortcode('imagerotator', array(&$this, 'generateHtml'));
    }

    // Various functions for plugin

    function generateHtml() {
      echo '<p>Hello World</p>';
    }
  }
}

/**
 * Create instance of image rotator
 */
$imageRotator = new ImageRotator();

/**
 * Create actions & filters for Wordpress
 */
if (isset($imageRotator)) {
  // Actions
  add_action('admin_menu', array(&$imageRotator, 'createMenu'));
  add_action('admin_init', array(&$imageRotator, 'registerSettings'));
  add_action('imagerotator_show', array(&$imageRotator, 'generateHtml'));
}

부분에서 테마 헤더 페이지:

<?php if (isset($imageRotator)) {
        $imageRotator->generateHtml();
    } else if (isset($ImageRotator)) {
        print_r($ImageRotator);
    } else {
        echo '<p>Nope!</p>';
    }

    if (function_exists("imagerotator_show")) {
      echo 'Function found';
    } else {
      echo 'Function NOT found';
    }
?>

현재 모든 나는 이제까지 볼 수은"아"와"기능을 찾을 수 없습니다".감사에 대한 모든 입력이 있습니다.

도움이 되었습니까?

해결책

우선,"imagerotator_show"기능은 없습니다;그 이름의 유형의 조치입니다.을 사용할 때 add_action()함수,워드프레스는 단지 당신의 방법을 이 목록의 기능/메서드를 호출할 때 특정 작업이 실행됩니다.따라서 당신의 두 번째 시험이 항상 대응으로'기능을 발견하지 않'.

의 가장 큰 원인은 첫 번째 문제는 실패를 선언한 메서드를 호출하려는 공인으로 방법입니다.당신은 또한 코드보다 더 열심히 해야 합니다.

최고의 연습을 본 적 선언하는 방법과 등록 후크 클래스에서는 다음과 같습니다:

if ( ! class_exists( 'Foo' ) ):
  class Foo {
    function __construct() {
      add_action( 'hook_name', array( &$this, 'my_hook_implementation' ) );
    }

    function my_hook_implementation() {
      // does something
    }

    public function my_special_method() {
      // does something else
    }
  }

if ( class_exists( 'Foo' ) ):
  $MyFoo = new Foo();

이용 클래스를 유지 모든 구현 세부 사항을 개인이다.를 호출해야 할 때 my_special_method(),당신은 그것을 다음과 같다:

$MyFoo->my_special_method();

다른 팁

@앤드류 제출할 수 있습니다==============마 것이라고 생각에 답변 부속 질문입니다.보:

http://net.tutsplus.com/tutorials/wordpress/create-wordpress-plugins-with-oop-techniques/

는 곳에 그것을 설명할 때 정의 콜백 함수 개체에서 당신을 사용하여 배열 기능이다.그것은 기본적으로 말하는 것을 얻는 기능'my_hook_implementation'에서 개체$이고 그것을 사용하 콜백으로 매개변수를 추가 작업이다.그것은 당신 때문에 정의된 기능의 범위 내에서 객체가 있을 정의하기 위해서는 범위에 대한 PHP 을 알고 어떤 기능을 이야기 한다.범위는 객체 참조하여 변수$다.

당신만을 사용해야 do_action() 기능 안에 당신의 테마입니다.

당신이 원하는 기능 generateHtml 를 나타나 내부의 header.php 을 열고 header.php 파일 및 붙여넣기 <?php do_action('imagerotator_show'); ?> 당신이 원하는 곳에 다음의 함수가 호출됩다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top